Merged with /trunk jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Fri, 30 Nov 2012 17:19:23 +0000
branchjv
changeset 17993 956342c369a2
parent 17992 797f12be31a0
child 17994 d51ebd1d3af0
Merged with /trunk
AbstractTime.st
Annotation.st
ApplicationDefinition.st
ArithmeticValue.st
AutoDeletedFilename.st
Autoload.st
Behavior.st
Block.st
CharacterArray.st
CharacterEncoder.st
ClassDescription.st
Collection.st
CompiledCode.st
Context.st
Date.st
ExternalLibraryFunction.st
ExternalStream.st
Filename.st
HashStream.st
Integer.st
Make.proto
Make.spec
Method.st
Number.st
Object.st
OpenError.st
PeekableStream.st
ProjectDefinition.st
RecursiveStoreError.st
Semaphore.st
SmallInteger.st
Smalltalk.st
TimeoutNotification.st
UserPreferences.st
WeakArray.st
Win32OperatingSystem.st
abbrev.stc
bc.mak
libInit.cc
libbasic.rc
stx_libbasic.st
--- a/AbstractTime.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/AbstractTime.st	Fri Nov 30 17:19:23 2012 +0000
@@ -878,6 +878,7 @@
     ^ aTimestamp getSeconds - self getSeconds
 ! !
 
+
 !AbstractTime methodsFor:'printing & storing'!
 
 addPrintBindingsTo:aDictionary
@@ -918,6 +919,7 @@
 
         %(milli1) milliseconds, truncated to 1/10th of a second 0..9         
         %(milli2) milliseconds, truncated to 1/100th of a second 00..99 0-padded to length 2        
+        %(milli3) milliseconds, same as %i for convenience
 
      Timestamp only:
         %(Day)         - day - unpadded                    
@@ -979,7 +981,7 @@
 
     "
 
-    |hours minutes seconds millis usHours ampm s zone tzDelta|
+    |hours minutes seconds millis usHours ampm s t zone tzDelta|
 
     hours := self hours.
     minutes := self minutes.
@@ -993,18 +995,26 @@
 
     aDictionary at:$H put:(s := hours printString).
     aDictionary at:$h put:(s leftPaddedTo:2 with:$0).
+
     aDictionary at:$U put:(s := usHours printString).
     aDictionary at:$u put:(s leftPaddedTo:2 with:$0).
+
     aDictionary at:$M put:(s := minutes printString).
     aDictionary at:$m put:(s leftPaddedTo:2 with:$0).
+
     aDictionary at:$S put:(s := seconds printString).
     aDictionary at:$s put:(s leftPaddedTo:2 with:$0).
+
     aDictionary at:$I put:(s := millis printString).
-    aDictionary at:$i put:(s leftPaddedTo:3 with:$0).
+    aDictionary at:$i put:(t := s leftPaddedTo:3 with:$0).
+    aDictionary at:#milli3 put:t.
+
     aDictionary at:#milli1 put:((millis // 100) printString).
     aDictionary at:#milli2 put:((millis // 10) printStringLeftPaddedTo:2 with:$0).
+
     aDictionary at:$t put:(seconds * minutes) printString.
     aDictionary at:$T put:(seconds * minutes * hours) printString.
+
     aDictionary at:$a put:ampm.
     aDictionary at:$A put:ampm asUppercase.
     aDictionary at:$z put:zone.
@@ -1187,15 +1197,15 @@
 !AbstractTime class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.74 2011/09/15 08:42:47 ca 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.74 2011/09/15 08:42:47 ca Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.76 2012/11/05 12:59:57 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: AbstractTime.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Id: AbstractTime.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 
--- a/Annotation.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Annotation.st	Fri Nov 30 17:19:23 2012 +0000
@@ -12,28 +12,28 @@
 "{ Package: 'stx:libbasic' }"
 
 Object subclass:#Annotation
-	instanceVariableNames:''
+	instanceVariableNames:'key arguments'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Kernel-Extensions'
 !
 
 Annotation subclass:#NameSpace
-	instanceVariableNames:'nameSpace'
+	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Annotation
 !
 
 Annotation subclass:#Resource
-	instanceVariableNames:'type value'
+	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Annotation
 !
 
 Annotation subclass:#Unknown
-	instanceVariableNames:'method key arguments'
+	instanceVariableNames:'method'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Annotation
@@ -118,7 +118,7 @@
 
     ^
     "/ cg: do not react on all those methods inherited from Object (such as inline:)
-    "/ self respondsTo: key)
+    "/ (self respondsTo: key)
     (self class includesSelector:key) 
         ifTrue:
             [self 
@@ -146,14 +146,14 @@
 namespace: aString
     <resource: #obsolete>
 
-    ^Annotation::NameSpace new nameSpaceName: aString
+    ^ self nameSpace:aString
 
     "Created: / 19-05-2010 / 16:01:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 resource: type
 
-    ^Annotation::Resource new type: type
+    ^Annotation::Resource new type: type value:nil
 
     "Created: / 16-07-2010 / 11:31:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -161,12 +161,13 @@
 resource: type value: value
 
     ^Annotation::Resource new 
-        type: type;
-        value: value
+        type: type value: value
 
     "Created: / 16-07-2010 / 11:31:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
+
 !Annotation class methodsFor:'finding'!
 
 allNamed: aSymbol from: aSubClass to: aSuperClass
@@ -229,8 +230,13 @@
     "Modified: / 20-08-2011 / 21:31:49 / cg"
 ! !
 
+
 !Annotation methodsFor:'accessing'!
 
+arguments
+    ^ arguments
+!
+
 first
 
     ^self key
@@ -239,11 +245,7 @@
 !
 
 key
-
-    ^self subclassResponsibility
-
-    "Created: / 19-05-2010 / 16:23:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-07-2010 / 11:29:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    ^ key
 ! !
 
 !Annotation methodsFor:'accessing-method'!
@@ -281,14 +283,6 @@
 	^ self arguments at: anInteger.
 !
 
-arguments
-        "Answer the arguments of the receiving pragma. For a pragma defined as <key1: val1 key2: val2> this will answer #(val1 val2)."
-
-    self subclassResponsibility
-
-    "Modified: / 21-08-2011 / 12:43:54 / cg"
-!
-
 message
 	"Answer the message of the receiving pragma."
 	
@@ -321,14 +315,19 @@
 
 !Annotation methodsFor:'initialization'!
 
+key:keyArg arguments:argumentsArg 
+    key := keyArg.
+    arguments := argumentsArg.
+!
+
 setArguments: anArray
-    self subclassResponsibility
+    arguments := anArray
 
     "Modified: / 21-08-2011 / 12:45:51 / cg"
 !
 
 setKeyword: aSymbol
-        self subclassResponsibility
+    key := aSymbol
 
     "Modified: / 21-08-2011 / 12:46:06 / cg"
 !
@@ -352,10 +351,15 @@
 !Annotation methodsFor:'printing & storing'!
 
 storeOn:aStream
+    "superclass Annotation says that I am responsible to implement this method"
 
-    self subclassResponsibility
+    aStream nextPutAll: '(Annotation key: '.
+    key storeOn: aStream.
+    aStream nextPutAll: ' arguments: '.
+    arguments storeOn: aStream.
+    aStream nextPut: $).
 
-    "Created: / 19-05-2010 / 16:26:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-05-2010 / 16:46:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !Annotation methodsFor:'processing'!
@@ -389,10 +393,21 @@
 !Annotation methodsFor:'queries'!
 
 refersToLiteral: anObject
-    (anObject == self key) ifTrue:[ ^ true ].
+    (anObject == key) ifTrue:[ ^ true ].
+    (anObject == arguments) ifTrue:[ ^ true ].
+    arguments isArray ifTrue:[ ^ arguments refersToLiteral: anObject].
     ^ false
 
-    "Created: / 26-07-2012 / 15:58:34 / cg"
+    "Created: / 26-07-2012 / 15:57:43 / cg"
+!
+
+refersToLiteralMatching: aMatchString
+    (key isSymbol and:[aMatchString match:key])ifTrue:[ ^ true ].
+    (arguments isSymbol and:[aMatchString match:arguments])ifTrue:[ ^ true ].
+    arguments isArray ifTrue:[ ^ arguments refersToLiteralMatching: aMatchString].
+    ^ false
+
+    "Created: / 26-07-2012 / 16:00:58 / cg"
 ! !
 
 !Annotation methodsFor:'testing'!
@@ -433,11 +448,11 @@
 !
 
 nameSpace
-    ^ nameSpace
+    ^ arguments first
 !
 
 nameSpace:something
-    nameSpace := something.
+    arguments := Array with:something.
 ! !
 
 !Annotation::NameSpace methodsFor:'initialization'!
@@ -455,7 +470,7 @@
     "superclass Annotation says that I am responsible to implement this method"
 
     aStream nextPutAll: '(Annotation namespace: '.
-    nameSpace name storeOn: aStream.
+    self nameSpace name storeOn: aStream.
     aStream nextPut:$)
 
     "Modified: / 19-05-2010 / 16:27:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -479,40 +494,35 @@
 
 !Annotation::Resource methodsFor:'accessing'!
 
-key
-    "superclass Annotation says that I am responsible to implement this method"
-
-    ^value 
-        ifNil:[#resource:]
-        ifNotNil:[#resource:value:]
-
-    "Modified: / 16-07-2010 / 11:30:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+type
+    ^ arguments at:1
 !
 
-type
-    ^ type
-!
-
-type:something
-    type := something.
+type:typeArg value:valueArg
+    valueArg isNil ifTrue:[
+        key := #'resource:'.
+        arguments := Array with:typeArg.
+    ] ifFalse:[
+        key := #'resource:value:'.
+        arguments := Array with:typeArg with:valueArg.
+    ].
 !
 
 value
-    ^ value
-!
-
-value:something
-    value := something.
+    arguments size > 1 ifTrue:[
+        ^ arguments at:2
+    ].
+    ^ nil
 ! !
 
 !Annotation::Resource methodsFor:'printing & storing'!
 
 storeOn:aStream
     aStream nextPutAll: '(Annotation resource: '.
-    type storeOn: aStream.
-    value notNil ifTrue: [
+    self type storeOn: aStream.
+    self value notNil ifTrue: [
         aStream nextPutAll: ' value: '.
-        value storeOn: aStream
+        self value storeOn: aStream
     ].    
     aStream nextPut:$)
 
@@ -537,26 +547,6 @@
     "Modified: / 16-07-2010 / 11:28:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!Annotation::Resource methodsFor:'queries'!
-
-refersToLiteral: anObject
-    (anObject == type) ifTrue:[ ^ true ].
-    (anObject == value) ifTrue:[ ^ true ].
-    value isArray ifTrue:[ ^ value refersToLiteral: anObject].
-    ^ false
-
-    "Created: / 26-07-2012 / 15:57:58 / cg"
-!
-
-refersToLiteralMatching: aMatchString
-    (type isSymbol and:[aMatchString match:type])ifTrue:[ ^ true ].
-    (value isSymbol and:[aMatchString match:value])ifTrue:[ ^ true ].
-    value isArray ifTrue:[ ^ value refersToLiteralMatching: aMatchString].
-    ^ false
-
-    "Created: / 26-07-2012 / 16:01:26 / cg"
-! !
-
 !Annotation::Resource methodsFor:'testing'!
 
 isResource
@@ -567,27 +557,20 @@
 
 !Annotation::Unknown methodsFor:'accessing'!
 
-arguments
-    ^ arguments
+method
+    ^ method
+
+    "Created: / 05-09-2011 / 04:38:33 / cg"
 !
 
-key
-    ^ key
-!
-
-method
-    ^ method
+setMethod:aMethod
+    method := aMethod
 
     "Created: / 05-09-2011 / 04:38:33 / cg"
 ! !
 
 !Annotation::Unknown methodsFor:'initialization'!
 
-key:keyArg arguments:argumentsArg 
-    key := keyArg.
-    arguments := argumentsArg.
-!
-
 method:methodArg key:keyArg arguments:argumentsArg
     method := methodArg.
     key := keyArg.
@@ -596,20 +579,6 @@
     "Created: / 05-09-2011 / 04:39:50 / cg"
 ! !
 
-!Annotation::Unknown methodsFor:'printing & storing'!
-
-storeOn:aStream
-    "superclass Annotation says that I am responsible to implement this method"
-
-    aStream nextPutAll: '(Annotation key: '.
-    key storeOn: aStream.
-    aStream nextPutAll: ' arguments: '.
-    arguments storeOn: aStream.
-    aStream nextPut: $).
-
-    "Modified: / 19-05-2010 / 16:46:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !Annotation::Unknown methodsFor:'processing'!
 
 annotatesClass:aClass
@@ -630,20 +599,12 @@
 
 refersToLiteral: anObject
     (anObject == method) ifTrue:[ ^ true ].
-    (anObject == key) ifTrue:[ ^ true ].
-    (anObject == arguments) ifTrue:[ ^ true ].
-    arguments isArray ifTrue:[ ^ arguments refersToLiteral: anObject].
-    ^ false
-
-    "Created: / 26-07-2012 / 15:57:43 / cg"
+    ^ super refersToLiteral: anObject
 !
 
 refersToLiteralMatching: aMatchString
     (method isSymbol and:[aMatchString match:method])ifTrue:[ ^ true ].
-    (key isSymbol and:[aMatchString match:key])ifTrue:[ ^ true ].
-    (arguments isSymbol and:[aMatchString match:arguments])ifTrue:[ ^ true ].
-    arguments isArray ifTrue:[ ^ arguments refersToLiteralMatching: aMatchString].
-    ^ false
+    ^ super refersToLiteralMatching: aMatchString
 
     "Created: / 26-07-2012 / 16:00:58 / cg"
 ! !
@@ -657,15 +618,15 @@
 !Annotation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Annotation.st,v 1.12 2012/10/29 10:25:12 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.12 2012/10/29 10:25:12 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 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: Annotation.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 Annotation initialize!
--- a/ApplicationDefinition.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/ApplicationDefinition.st	Fri Nov 30 17:19:23 2012 +0000
@@ -1649,9 +1649,9 @@
 target: %(BUILD_TARGET) postBuildCleanup 
 
 # the executable, all required files and a self-installing-installer-exe
-ALL:: prereq exe postBuildCleanup setup 
-
-exe:  newBuildDate %(NOCONSOLE_APPLICATION_OR_EMPTY) %(CONSOLE_APPLICATION_OR_EMPTY) $(REQUIRED_SUPPORT_DIRS) %(ADDITIONAL_TARGETS)
+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
@@ -1841,7 +1841,7 @@
 # ENDMAKEDEPEND --- do not remove this line
 '.
 
-    "Modified: / 28-09-2012 / 18:30:15 / cg"
+    "Modified: / 22-11-2012 / 17:18:28 / cg"
     "Modified: / 28-11-2012 / 10:18:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
@@ -2627,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)"
@@ -2661,7 +2661,7 @@
 
 Function un.onInit
 !!insertmacro MUI_UNGETLANGUAGE
-  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Möchten Sie %(PRODUCT_NAME) und alle seine Komponenten deinstallieren?" IDYES +2
+  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Mchten Sie %(PRODUCT_NAME) und alle seine Komponenten deinstallieren?" IDYES +2
   Abort
 FunctionEnd
 
@@ -2904,13 +2904,14 @@
 !ApplicationDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ApplicationDefinition.st 10875 2012-11-28 10:22:05Z vranyj1 $'
+    ^ '$Id: ApplicationDefinition.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.207 2012/10/12 10:36:21 sr Exp §'
+    ^ 'Header: /cvs/stx/stx/libbasic/ApplicationDefinition.st,v 1.208 2012/11/22 16:20:01 cg Exp '
 !
 
 version_SVN
-    ^ '$Id:: ApplicationDefinition.st 10875 2012-11-28 10:22:05Z vranyj1                                                            $'
+    ^ '$Id:: ApplicationDefinition.st 10876 2012-11-30 17:19:23Z vranyj1                                                            $'
 ! !
+
--- a/ArithmeticValue.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/ArithmeticValue.st	Fri Nov 30 17:19:23 2012 +0000
@@ -203,7 +203,6 @@
     ^ self == ArithmeticValue
 ! !
 
-
 !ArithmeticValue methodsFor:'arithmetic'!
 
 * something
@@ -1280,6 +1279,13 @@
      5 roundTo:4
      6 roundTo:4
      7 roundTo:4
+
+     7.123 roundTo:0.1
+     7.523 roundTo:0.1
+     7.583 roundTo:0.1 
+     7.623 roundTo:0.1
+     7.623 roundTo:0.01 
+     7.628 roundTo:0.01 
     "
 !
 
@@ -1333,19 +1339,15 @@
 !ArithmeticValue class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.89 2012/02/12 19:53:21 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.89 2012/02/12 19:53:21 cg Exp '
+    ^ '§Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.90 2012/11/05 17:05:58 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: ArithmeticValue.st 10777 2012-02-13 19:19:41Z vranyj1 $'
+    ^ '$Id: ArithmeticValue.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 ArithmeticValue initialize!
-
-
-
-
--- a/AutoDeletedFilename.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/AutoDeletedFilename.st	Fri Nov 30 17:19:23 2012 +0000
@@ -90,12 +90,6 @@
 "
 ! !
 
-!AutoDeletedFilename class methodsFor:'queries'!
-
-isAbstract
-    ^ true
-! !
-
 !AutoDeletedFilename methodsFor:'accessing'!
 
 finalize
@@ -143,11 +137,11 @@
 !AutoDeletedFilename class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AutoDeletedFilename.st,v 1.7 2009/06/22 21:57:00 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AutoDeletedFilename.st,v 1.8 2012/11/06 17:47:54 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: AutoDeletedFilename.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Id: AutoDeletedFilename.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 
--- a/Autoload.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Autoload.st	Fri Nov 30 17:19:23 2012 +0000
@@ -581,6 +581,10 @@
     ^ #()
 !
 
+isAbstract
+    ^ false "/ actually: dont know, but do not want to load my class for this query
+!
+
 new
     "catch new - load the class and resend #new to the real one"
 
@@ -704,10 +708,6 @@
     ^ false
 !
 
-isAbstract
-    ^ true
-!
-
 isBehavior
     "return true, if the receiver is describing another objects behavior.
      Autoloaded classes are definitely; therefore return true."
@@ -797,15 +797,15 @@
 !Autoload class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.160 2012/10/20 19:52:22 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.160 2012/10/20 19:52:22 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.162 2012/11/06 00:23:36 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: Autoload.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: Autoload.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 Autoload initialize!
--- a/Behavior.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Behavior.st	Fri Nov 30 17:19:23 2012 +0000
@@ -1192,25 +1192,29 @@
     |oldMethod ns selector |
 
     (newSelector isMemberOf:Symbol) ifFalse:[
-	self error:'invalid selector'.
+        self error:'invalid selector'.
     ].
 
     ns := newMethod nameSpace.
     selector := (ns isNil or:[ns == self programmingLanguage])
-		    ifTrue:[newSelector]
-		    ifFalse:[(':' , ns name , '::' , newSelector) asSymbol].
-
-
+                    ifTrue:[newSelector]
+                    ifFalse:[(':' , ns name , '::' , newSelector) asSymbol].
+
+    "/ Q (cg): isn't that something that the caller should decide?
     oldMethod := self compiledMethodAt:selector.
     oldMethod notNil ifTrue:[
-	newMethod restricted:(oldMethod isRestricted).
-	newMethod setPrivacy:(oldMethod privacy) flushCaches:false.
+        newMethod restricted:(oldMethod isRestricted).
+        newMethod setPrivacy:(oldMethod privacy) flushCaches:false.
     ].
 
     (self primAddSelector:selector withMethod:newMethod) ifFalse:[^ false].
 
-    selector isNameSpaceSelector ifTrue:[
-	self lookupObject: NamespaceAwareLookup
+    (Smalltalk at: #NamespaceAwareLookup) notNil ifTrue:[
+        lookupObject ~= NamespaceAwareLookup ifTrue:[
+            selector isNameSpaceSelector ifTrue:[
+                self lookupObject: NamespaceAwareLookup
+            ]
+        ]
     ].
 
     "
@@ -1220,12 +1224,12 @@
     "
 "
     problem: this is slower; since looking for all subclasses is (currently)
-	     a bit slow :-(
-	     We need the hasSubclasses-info bit in Behavior; now
+             a bit slow :-(
+             We need the hasSubclasses-info bit in Behavior; now
 
     self withAllSubclassesDo:[:aClass |
-	ObjectMemory flushInlineCachesFor:aClass withArgs:nargs.
-	ObjectMemory flushMethodCacheFor:aClass
+        ObjectMemory flushInlineCachesFor:aClass withArgs:nargs.
+        ObjectMemory flushMethodCacheFor:aClass
     ].
 "
 
@@ -1335,6 +1339,7 @@
 !
 
 lookupObject: anObject
+    lookupObject == anObject ifTrue:[^ self ].
     anObject isNil ifTrue:[^self setLookupObject: anObject].
 
     (anObject respondsTo: #lookupMethodForSelector:directedTo:for:withArguments:from:ilc:)
@@ -1924,6 +1929,16 @@
     "
 ! !
 
+!Behavior methodsFor:'error handling'!
+
+abstractClassInstantiationError
+    "sent by an abstract classes redefined new method"
+
+    ^ AbstractClassInstantiationError raiseRequest
+
+    "Created: / 02-11-2012 / 10:07:01 / cg"
+! !
+
 !Behavior methodsFor:'initialization'!
 
 deinitialize
@@ -2784,17 +2799,19 @@
     "can be redefined for a private icon in the browser (for me and my subclasses).
      The returned symbol must be a selector of the ToolbarIconLibrary."
 
-    (self isBrowserStartable) ifTrue:[
-	self isVisualStartable ifTrue:[
-	    ^ #visualStartableClassBrowserIcon
-	].
-	^ #startableClassBrowserIcon
+    <resource: #programImage>
+
+    self isLoaded ifFalse:[
+        ^ #autoloadedClassBrowserIcon
     ].
-    self isLoaded ifFalse:[
-	^ #autoloadedClassBrowserIcon
+    (self isBrowserStartable) ifTrue:[
+        self isVisualStartable ifTrue:[
+            ^ #visualStartableClassBrowserIcon
+        ].
+        ^ #startableClassBrowserIcon
     ].
 
-    "/ give ruby and other special metaclasses a chance ot provide their orn icon...
+    "/ give ruby and other special metaclasses a chance to provide their own icon...
     ^ self class iconInBrowserSymbol
 
     "Created: / 20-07-2007 / 08:52:17 / cg"
@@ -3035,9 +3052,11 @@
      If non-nil, no lookup is performed by the VM, instead the lookupObject
      has to provide a method object for message sends."
 
-    lookupObject := aMethodLookupObject.
-    ObjectMemory flushCachesFor: self.
-    self allSubclassesDo:[:cls|ObjectMemory flushCachesFor: cls]
+    lookupObject ~~ aMethodLookupObject ifTrue:[
+        lookupObject := aMethodLookupObject.
+        ObjectMemory flushCachesFor: self.
+        self allSubclassesDo:[:cls|ObjectMemory flushCachesFor: cls]
+    ]
 
     "Modified: / 22-07-2010 / 18:10:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
@@ -3150,6 +3169,10 @@
     "Created: / 06-08-2006 / 15:23:32 / cg"
 !
 
+isAbstract
+    ^ false
+!
+
 isBehavior
     "return true, if the receiver is describing another objects behavior.
      Defined to avoid the need to use isKindOf:"
@@ -4803,13 +4826,13 @@
 !Behavior class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.324 2012/10/22 11:38:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.327 2012/11/25 09:52:30 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.324 2012/10/22 11:38:58 cg Exp §'
+    ^ 'Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.327 2012/11/25 09:52:30 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Behavior.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: Behavior.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
--- a/Block.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Block.st	Fri Nov 30 17:19:23 2012 +0000
@@ -776,8 +776,6 @@
 !Block methodsFor:'copying'!
 
 deepCopyUsing:aDictionary postCopySelector:postCopySelector
-    "raise an error - deepCopy is not allowed for blocks"
-
     |copyOfHome copyOfMe|
 
     home isNil ifTrue:[
@@ -790,7 +788,6 @@
     ^ copyOfMe
 
     "Created: / 31-03-1998 / 15:46:17 / cg"
-    "Modified: / 20-10-2006 / 14:53:34 / User"
     "Modified: / 21-07-2011 / 13:30:12 / cg"
 ! !
 
@@ -3027,15 +3024,15 @@
 !Block class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Block.st,v 1.188 2012/05/22 09:58:15 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.188 2012/05/22 09:58:15 stefan Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Block.st,v 1.189 2012/11/24 12:51:52 stefan Exp §'
 !
 
 version_SVN
-    ^ '$Id: Block.st 10814 2012-06-05 13:35:12Z vranyj1 $'
+    ^ '$Id: Block.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 Block initialize!
--- a/CharacterArray.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/CharacterArray.st	Fri Nov 30 17:19:23 2012 +0000
@@ -195,25 +195,26 @@
     "skip whiteSpace"
     str skipSeparators.
 
-    (str nextOrNil == $') ifTrue:[
-	collected := self writeStream.
-	[str atEnd] whileFalse:[
-	    char := str next.
-	    char == $' ifTrue:[
-		"/ look for another quote
-		str peekOrNil ~~ $' ifTrue:[
-		    "end of string reached"
-		    ^ collected contents.
-		].
-		"eat doubled quote"
-		str next.
-	    ].
-	    ((char ~~ Character return) or:[str peekOrNil ~~ Character lf]) ifTrue:[
-		"compress CRLF to LF, but keep a single CR"
-		collected nextPut:char.
-	    ].
-	].
-	"if we come here, we reached the end without finding a closing $'"
+    (str peekOrNil == $') ifTrue:[
+        str next.
+        collected := self writeStream.
+        [str atEnd] whileFalse:[
+            char := str next.
+            char == $' ifTrue:[
+                "/ look for another quote
+                str peekOrNil ~~ $' ifTrue:[
+                    "end of string reached"
+                    ^ collected contents.
+                ].
+                "eat doubled quote"
+                str next.
+            ].
+            ((char ~~ Character return) or:[str peekOrNil ~~ Character lf]) ifTrue:[
+                "compress CRLF to LF, but keep a single CR"
+                collected nextPut:char.
+            ].
+        ].
+        "if we come here, we reached the end without finding a closing $'"
     ].
     ^ exceptionBlock value
 
@@ -2395,9 +2396,13 @@
 asCollectionOfLines
     "return a collection containing the lines (separated by cr)
      of the receiver. If multiple cr's occur in a row, the result will
-     contain empty strings."
-
-    ^ self asCollectionOfSubstringsSeparatedBy:Character cr
+     contain empty strings. 
+     If the string ends with a cr, an empty line will be found as last element of the resulting collection.
+     See also #asCollectionOfLinesWithReturn
+     (would have rather changed this method instead of adding another one, but a lot of code already uses
+      this method and we did not want to risk any incompatibilities)"
+
+    ^ self asCollectionOfSubstringsSeparatedBy:Character cr.
 
     "
      '1 one\2 two\3 three\4 four\5 five' withCRs asCollectionOfLines
@@ -2405,6 +2410,27 @@
     "
 !
 
+asCollectionOfLinesWithReturn
+    "return a collection containing the lines (separated by cr)
+     of the receiver. If multiple cr's occur in a row, the result will
+     contain empty strings."
+
+    |lines|
+
+    lines := self asCollectionOfSubstringsSeparatedBy:Character cr.
+    lines last isEmpty ifTrue:[
+        ^ lines copyWithoutLast:1
+    ].
+    ^ lines
+
+    "
+     '1\2\3' withCRs asCollectionOfLines
+     '1\2\3\' withCRs asCollectionOfLines
+     '1\2\3' withCRs asCollectionOfLinesWithReturn
+     '1\2\3\' withCRs asCollectionOfLinesWithReturn
+    "
+!
+
 asCollectionOfSubstringsSeparatedBy:aCharacter
     "return a collection containing the lines (separated by aCharacter)
      of the receiver. If aCharacter occurs multiple times in a row,
@@ -2434,26 +2460,26 @@
     startIndex := 1.
     except := false.
     [
-	i := startIndex-1.
-	[
-	    i := i+1.
-	    c := self at:i.
-	    c = ch ifTrue:[ except := except not. ].
-	    i < self size and:[except or:[c ~= aCharacter]]
-	] whileTrue.
-
-	c = aCharacter ifTrue:[
-	    stopIndex := i -1.
-	] ifFalse: [
-	    stopIndex := i.
-	].
-	(stopIndex < startIndex) ifTrue: [
-	    lines add:(myClass new:0)
-	] ifFalse: [
-	    lines add:(self copyFrom:startIndex to:stopIndex)
-	].
-	startIndex := stopIndex + 2.
-	startIndex <= self size
+        i := startIndex-1.
+        [
+            i := i+1.
+            c := self at:i.
+            c = ch ifTrue:[ except := except not. ].
+            i < self size and:[except or:[c ~= aCharacter]]
+        ] whileTrue.
+
+        c = aCharacter ifTrue:[
+            stopIndex := i -1.
+        ] ifFalse: [
+            stopIndex := i.
+        ].
+        (stopIndex < startIndex) ifTrue: [
+            lines add:(myClass new:0)
+        ] ifFalse: [
+            lines add:(self copyFrom:startIndex to:stopIndex)
+        ].
+        startIndex := stopIndex + 2.
+        startIndex <= self size
     ] whileTrue.
     ^ lines
 
@@ -6096,15 +6122,15 @@
 !CharacterArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.478 2012/10/29 11:55:18 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.481 2012/10/31 19:10:50 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.478 2012/10/29 11:55:18 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.481 2012/10/31 19:10:50 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: CharacterArray.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: CharacterArray.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 CharacterArray initialize!
--- a/CharacterEncoder.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/CharacterEncoder.st	Fri Nov 30 17:19:23 2012 +0000
@@ -12,55 +12,55 @@
 "{ Package: 'stx:libbasic' }"
 
 Object subclass:#CharacterEncoder
-        instanceVariableNames:''
-        classVariableNames:'EncoderClassesByName EncodersByName CachedEncoders LastEncoder
-                AccessLock NullEncoderInstance Jis7KanjiEscapeSequence
-                Jis7RomanEscapeSequence JisISO2022EscapeSequence
-                Jis7KanjiOldEscapeSequence'
-        poolDictionaries:''
-        category:'Collections-Text-Encodings'
+	instanceVariableNames:''
+	classVariableNames:'EncoderClassesByName EncodersByName CachedEncoders LastEncoder
+		AccessLock NullEncoderInstance Jis7KanjiEscapeSequence
+		Jis7RomanEscapeSequence JisISO2022EscapeSequence
+		Jis7KanjiOldEscapeSequence'
+	poolDictionaries:''
+	category:'Collections-Text-Encodings'
 !
 
 CharacterEncoder subclass:#CompoundEncoder
-        instanceVariableNames:'decoder encoder'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:CharacterEncoder
+	instanceVariableNames:'decoder encoder'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
 !
 
 CharacterEncoder subclass:#DefaultEncoder
-        instanceVariableNames:''
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:CharacterEncoder
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
 !
 
 CharacterEncoder subclass:#InverseEncoder
-        instanceVariableNames:'decoder'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:CharacterEncoder
+	instanceVariableNames:'decoder'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
 !
 
 CharacterEncoder subclass:#NullEncoder
-        instanceVariableNames:''
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:CharacterEncoder
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
 !
 
 CharacterEncoder subclass:#OtherEncoding
-        instanceVariableNames:''
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:CharacterEncoder
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
 !
 
 CharacterEncoder subclass:#TwoStepEncoder
-        instanceVariableNames:'encoder1 encoder2'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:CharacterEncoder
+	instanceVariableNames:'encoder1 encoder2'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:CharacterEncoder
 !
 
 !CharacterEncoder class methodsFor:'documentation'!
@@ -1642,6 +1642,13 @@
 
 !CharacterEncoder::TwoStepEncoder methodsFor:'queries'!
 
+characterSize:codePoint
+    "/ naive; actually, we have to do a real encoding to get this info proper
+    ^ (encoder2 characterSize:codePoint)
+
+    "Created: / 22-11-2012 / 13:07:47 / cg"
+!
+
 nameOfEncoding
     ^ "encoder1 nameOfEncoding , '-' ," encoder2 nameOfEncoding
 
@@ -1665,15 +1672,15 @@
 !CharacterEncoder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.118 2012/07/13 12:46:09 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.119 2012/11/22 12:39:56 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.118 2012/07/13 12:46:09 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.119 2012/11/22 12:39:56 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: CharacterEncoder.st 10824 2012-07-18 16:55:48Z vranyj1 $'
+    ^ '$Id: CharacterEncoder.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 CharacterEncoder initialize!
--- a/ClassDescription.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/ClassDescription.st	Fri Nov 30 17:19:23 2012 +0000
@@ -1692,11 +1692,15 @@
 
     |cat code oldMethod oldPackage newMethod|
 
+    oldMethod := self compiledMethodAt:aSelector.
+    oldMethod isNil ifTrue:[
+        self error:'no such method'
+    ].
+    oldPackage := oldMethod getPackage.
+    cat := oldMethod category.
+    code := self sourceCodeAt:aSelector.
+
     Class withoutUpdatingChangesDo:[
-        oldMethod := self compiledMethodAt:aSelector.
-        oldPackage := oldMethod getPackage.
-        cat := oldMethod category.
-        code := self sourceCodeAt:aSelector.
 
         Error handle:[:ex |
             "/ dont want to loose code !!
@@ -4199,15 +4203,15 @@
 !ClassDescription class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.226 2012/10/22 22:28:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.227 2012/11/08 00:17:13 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.226 2012/10/22 22:28:52 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.227 2012/11/08 00:17:13 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: ClassDescription.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: ClassDescription.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 ClassDescription::MethodRedefinitionNotification initialize!
--- a/Collection.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Collection.st	Fri Nov 30 17:19:23 2012 +0000
@@ -923,6 +923,23 @@
     "Modified: 12.4.1996 / 13:30:54 / cg"
 !
 
+addAllNonNilElements:aCollection
+    "add all non-nil elements of the argument, aCollection to the receiver.
+     Use this, when operating on a Set, that should not hold nil.
+     Answer the argument, aCollection."
+
+    aCollection do:[:eachElement |
+        eachElement notNil ifTrue:[
+            self add:eachElement
+        ].
+    ].
+    ^ aCollection
+
+    "
+     #(1 2 3 4) asSet addAllNonNilElements:#(5 nil 6 7 8); yourself
+    "
+!
+
 addFirst:anObject
     "add the argument, anObject to the receiver.
      If the receiver is ordered, the new element will be added at the beginning.
@@ -4412,15 +4429,15 @@
 !Collection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.282 2012/10/19 12:03:06 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.283 2012/11/23 16:35:50 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Collection.st,v 1.282 2012/10/19 12:03:06 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Collection.st,v 1.283 2012/11/23 16:35:50 stefan Exp §'
 !
 
 version_SVN
-    ^ '$Id: Collection.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: Collection.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 Collection initialize!
--- a/CompiledCode.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/CompiledCode.st	Fri Nov 30 17:19:23 2012 +0000
@@ -327,6 +327,14 @@
     "Modified: / 30.1.1999 / 14:51:59 / cg"
 !
 
+homeMethod
+    "for common protocol with blocks: if the receiver is a method,
+     return the receiver; otherwise, if its a block, return its home
+     method."
+
+    ^ self
+!
+
 literalAt:index
     "return a literal element"
 
@@ -428,14 +436,14 @@
 
 literalsDetect:aBlock ifNone:exceptionBlock
     "execute a one arg block for each of our literals.
-     return the first literal for which aBlock returns true,
+     Return the first literal for which aBlock returns true,
      or the value from exceptionBlock, if either no literals or
      none satisfied the block"
 
     self literalsDo:[:eachLiteral |
-	(aBlock value:eachLiteral) ifTrue:[
-	    ^ eachLiteral
-	]
+        (aBlock value:eachLiteral) ifTrue:[
+            ^ eachLiteral
+        ]
     ].
     ^ exceptionBlock value.
 
@@ -534,6 +542,10 @@
 
     "Modified: / 30.1.1999 / 14:55:42 / cg"
     "Created: / 30.1.1999 / 14:55:51 / cg"
+!
+
+source
+    ^ self subclassResponsibility.
 ! !
 
 !CompiledCode methodsFor:'compiler interface'!
@@ -1859,15 +1871,15 @@
 !CompiledCode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.118 2012/10/26 10:25:36 stefan 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.118 2012/10/26 10:25:36 stefan Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/CompiledCode.st,v 1.120 2012/11/04 14:13:28 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: CompiledCode.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: CompiledCode.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 
--- a/Context.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Context.st	Fri Nov 30 17:19:23 2012 +0000
@@ -811,8 +811,6 @@
 !Context methodsFor:'copying'!
 
 deepCopyUsing:aDictionary postCopySelector:postCopySelector
-    "raise an error - deepCopy is not allowed for contexts"
-
     |copyOfMe|
 
     copyOfMe := self shallowCopy.
@@ -821,7 +819,6 @@
     ^ copyOfMe
 
     "Created: / 31-03-1998 / 15:51:14 / cg"
-    "Modified: / 20-10-2006 / 14:54:12 / User"
     "Modified: / 21-07-2011 / 13:30:21 / cg"
 ! !
 
@@ -2466,15 +2463,15 @@
 !Context class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.176 2012/10/23 08:17:36 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.177 2012/11/24 12:52:13 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Context.st,v 1.176 2012/10/23 08:17:36 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Context.st,v 1.177 2012/11/24 12:52:13 stefan Exp §'
 !
 
 version_SVN
-    ^ '$Id: Context.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: Context.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 Context initialize!
--- a/Date.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Date.st	Fri Nov 30 17:19:23 2012 +0000
@@ -798,6 +798,7 @@
     "
 ! !
 
+
 !Date class methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -900,6 +901,8 @@
     ^ firstDayInWeek
 
     "
+     Date newDay:1 year:1900  
+     Date dayOfFirstWeekInYear:1900  
      Date dayOfFirstWeekInYear:1998   
      Date dayOfFirstWeekInYear:1999    
      Date dayOfFirstWeekInYear:2000  
@@ -1257,8 +1260,13 @@
 
 weekInYearOf:aDateOrTimestamp
     "for a given date or timeStamp, return the week-number.
-     the returned week number starts with 1 for the first week which has a thursday in it.
-     The above definition can lead to the 1st week starting in the old year!!"
+     The returned week number starts with 1 for the first week which has a thursday in it.
+     (see DIN 1355-1/ISO 8601)
+     The rule is:
+        every monday (and only monday), a new week begins   
+        the first week is the one which has at least 4 days of the new year in it
+        
+     Be prepared: this definition can lead to the 1st week starting in the old year!!"
 
     |date dayInYear numDays dayOfFirstWeekInYear dayOfFirstWeekInNextYear week|
 
@@ -1331,6 +1339,7 @@
 
     "
      Date yearAsDays:5 
+     Date yearAsDays:1900 
      Date yearAsDays:1901 
      Date yearAsDays:1902   
      Date yearAsDays:1903   
@@ -1373,6 +1382,7 @@
     ^ self leapYear:yearInteger
 ! !
 
+
 !Date class methodsFor:'private'!
 
 abbreviatedMonthNamesForLanguage:language
@@ -1622,6 +1632,7 @@
     "
 ! !
 
+
 !Date methodsFor:'Compatibility-ANSI'!
 
 dayOfWeek
@@ -2706,6 +2717,8 @@
     "
 ! !
 
+
+
 !Date methodsFor:'obsolete'!
 
 asAbsoluteTime
@@ -2776,6 +2789,7 @@
     ^ self addDays:days
 ! !
 
+
 !Date methodsFor:'printing & storing'!
 
 addPrintBindingsTo:aDictionary
@@ -2874,12 +2888,12 @@
     aDictionary at:$W put:ws.
 
     aDictionary at:#monthName put:monthName.
-    aDictionary at:#monthname put:monthName.
+    aDictionary at:#monthname put:monthName asLowercase.
     aDictionary at:#MonthName put:monthName asUppercaseFirst.
     aDictionary at:#MONTHNAME put:monthName asUppercase.
 
     aDictionary at:#dayName put:dayName.
-    aDictionary at:#dayname put:dayName.
+    aDictionary at:#dayname put:dayName asLowercase.
     aDictionary at:#DayName put:dayName asUppercaseFirst.
     aDictionary at:#DAYNAME put:dayName asUppercase.
 
@@ -2888,12 +2902,12 @@
     aDictionary at:#weekDayUS put:dayOfWeek.
 
     aDictionary at:#shortDayName put:(shortDayName := self class abbreviatedNameOfDay:(self dayInWeek) language:languageOrNil).
-    aDictionary at:#shortdayname put:shortDayName.
+    aDictionary at:#shortdayname put:shortDayName asLowercase.
     aDictionary at:#ShortDayName put:shortDayName asUppercaseFirst.
     aDictionary at:#SHORTDAYNAME put:shortDayName asUppercase.
 
     aDictionary at:#shortMonthName put:(shortMonthName := self class abbreviatedNameOfMonth:(self month) language:languageOrNil).
-    aDictionary at:#shortmonthname put:shortMonthName.
+    aDictionary at:#shortmonthname put:shortMonthName asLowercase.
     aDictionary at:#ShortMonthName put:shortMonthName asUppercaseFirst.
     aDictionary at:#SHORTMONTHNAME put:shortMonthName asUppercase.
 
@@ -2901,6 +2915,8 @@
                                      "/ 0   1    2    3    4    5    6    7    8    9
     aDictionary at:#weekDayNth put:(#('th' 'st' 'nd' 'rd' 'th' 'th' 'th') at:(dayOfWeek-1) \\ 10 + 1). 
                                      "/ 0   1    2    3    4    5    6      
+    aDictionary at:#weekDayUSNth put:(#('st' 'nd' 'rd' 'th' 'th' 'th' 'th') at:(dayOfWeek-1) \\ 10 + 1). 
+                                     "/ 0   1    2    3    4    5    6      
     aDictionary at:#weekNth    put:(#('th' 'st' 'nd' 'rd' 'th' 'th' 'th' 'th' 'th' 'th') at:weekInYear \\ 10 + 1).
                                      "/ 0   1    2    3    4    5    6    7    8    9     
 !
@@ -3133,15 +3149,15 @@
 !Date class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Date.st,v 1.141 2012/08/29 14:24:55 sr Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Date.st,v 1.143 2012/11/05 21:05:45 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Date.st,v 1.141 2012/08/29 14:24:55 sr Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Date.st,v 1.143 2012/11/05 21:05:45 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: Date.st 10844 2012-09-07 16:24:32Z vranyj1 $'
+    ^ '$Id: Date.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 Date initialize!
--- a/ExternalLibraryFunction.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/ExternalLibraryFunction.st	Fri Nov 30 17:19:23 2012 +0000
@@ -118,7 +118,7 @@
 
   Synchronous vs. Asynchronous calls:
 
-    by default, foreign function calls are synchronous, effecftively blocking the whole ST/X system
+    by default, foreign function calls are synchronous, effectively blocking the whole ST/X system
     (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...).
@@ -1577,6 +1577,7 @@
     argumentsOrNil isNil ifTrue:[
         ^ self primitiveFailed
     ].
+    thisContext isRecursive ifTrue: [^self primitiveFailed].
 
     anyBadArg := false.
     originalToSaveArgMapping := IdentityDictionary new.
@@ -1620,6 +1621,8 @@
         saveArg free.
     ].
     ^ result.
+
+    "Modified (format): / 06-11-2012 / 10:52:41 / anwild"
 ! !
 
 !ExternalLibraryFunction methodsFor:'testing'!
@@ -1636,11 +1639,11 @@
 !ExternalLibraryFunction class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ExternalLibraryFunction.st,v 1.88 2012/10/20 20:54:26 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/ExternalLibraryFunction.st,v 1.90 2012/11/16 09:27:00 stefan Exp §'
 !
 
 version_SVN
-    ^ '$Id: ExternalLibraryFunction.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: ExternalLibraryFunction.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 ExternalLibraryFunction initialize!
--- a/ExternalStream.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/ExternalStream.st	Fri Nov 30 17:19:23 2012 +0000
@@ -3866,15 +3866,16 @@
 
 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
 ! !
 
@@ -5693,15 +5694,15 @@
 !ExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.351 2012/10/26 10:25:03 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.352 2012/11/19 15:01:44 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.351 2012/10/26 10:25:03 stefan Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.352 2012/11/19 15:01:44 stefan Exp §'
 !
 
 version_SVN
-    ^ '$Id: ExternalStream.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: ExternalStream.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 ExternalStream initialize!
--- a/Filename.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Filename.st	Fri Nov 30 17:19:23 2012 +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'!
@@ -5819,6 +5819,32 @@
 
 !Filename methodsFor:'writing-files'!
 
+appendingFileDo:aBlock
+    "create a append-stream on the receiver file, evaluate aBlock, passing that stream as arg,
+     and return the blocks value. 
+     If the file cannot be opened, an exception is raised.
+     Ensures that the stream is closed."
+
+    |stream result|
+
+    stream := self appendStream.
+    [
+        result := aBlock value:stream
+    ] ensure:[
+        stream close
+    ].
+    ^ result
+
+    "
+     'ttt' asFilename appendingFileDo:[:s |
+        s nextPutLine:'hello'.
+        s nextPutLine:'world'.
+     ]           
+    "
+
+    "Created: / 09-11-2012 / 10:07:41 / sr"
+!
+
 contents:aStringOrCollectionOfLines
     "create (or overwrite) a file given its contents as a collection of lines.
      Raises an error, if the file is unwritable."
@@ -5875,15 +5901,15 @@
 !Filename class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.379 2012/10/27 17:44:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.381 2012/11/09 09:08:52 sr Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Filename.st,v 1.379 2012/10/27 17:44:35 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Filename.st,v 1.381 2012/11/09 09:08:52 sr Exp §'
 !
 
 version_SVN
-    ^ '$Id: Filename.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: Filename.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 Filename initialize!
--- a/HashStream.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/HashStream.st	Fri Nov 30 17:19:23 2012 +0000
@@ -257,17 +257,7 @@
     "
 !
 
-hmac
-    "answer a hmac stream with myself"
 
-    ^ HmacStream on:self
-
-    "
-     (SHA1Stream new hmac key:'exampleKey') digestMessage:'message to generate MAC of'
-    "
-
-    "Modified (comment): / 09-01-2012 / 13:51:01 / cg"
-!
 
 reset
     "initialize to a clean state"
@@ -401,18 +391,13 @@
 !HashStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.25 2012/01/23 09:01:40 cg 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.25 2012/01/23 09:01:40 cg Exp '
+    ^ '§Header: /cvs/stx/stx/libbasic/HashStream.st,v 1.26 2012/10/31 15:57:49 stefan Exp §'
 !
 
 version_SVN
-    ^ '$Id: HashStream.st 10777 2012-02-13 19:19:41Z vranyj1 $'
+    ^ '$Id: HashStream.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
-
-
-
-
-
--- a/Integer.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Integer.st	Fri Nov 30 17:19:23 2012 +0000
@@ -817,6 +817,7 @@
     "
 ! !
 
+
 !Integer class methodsFor:'prime numbers'!
 
 flushPrimeCache
@@ -1139,6 +1140,7 @@
     ^ self == Integer
 ! !
 
+
 !Integer methodsFor:'Compatibility-Dolphin'!
 
 & aNumber
@@ -2987,19 +2989,30 @@
 !
 
 integerLog2
-    "return the floor of log2 of the receiver"
+    "return the floor of log2 of the receiver.
+     This is the same as (self log:2) floor."
 
     self <= 0 ifTrue:[
         ^ self class
             raise:#domainErrorSignal
             receiver:self
-            selector:#intlog10
+            selector:#integerLog2
             arguments:#()
             errorString:'logarithm of negative integer'
     ].
     ^ self highBit - 1.
 
     "
+      2  log:2  
+      2  integerLog2  
+
+      3  log:2       
+      3  integerLog2  
+
+      4  log:2          
+      4  integerLog2    
+
+      64  integerLog2  
       100 integerLog2
       100 log:2
       999 integerLog2
@@ -4162,6 +4175,7 @@
     "Created: / 09-01-2012 / 17:18:06 / cg"
 ! !
 
+
 !Integer methodsFor:'special modulu arithmetic'!
 
 add_32:anInteger
@@ -4848,15 +4862,15 @@
 !Integer class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Integer.st,v 1.270 2012/10/29 11:35:37 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.270 2012/10/29 11:35:37 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Integer.st,v 1.271 2012/11/04 15:05:51 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: Integer.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: Integer.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 Integer initialize!
--- a/Make.proto	Wed Nov 28 10:22:05 2012 +0000
+++ b/Make.proto	Fri Nov 30 17:19:23 2012 +0000
@@ -396,8 +396,10 @@
 $(OUTDIR)InvalidCodeError.$(O) InvalidCodeError.$(H): InvalidCodeError.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)InvalidModeError.$(O) InvalidModeError.$(H): InvalidModeError.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)InvalidOperationError.$(O) InvalidOperationError.$(H): InvalidOperationError.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)InvalidTypeError.$(O) InvalidTypeError.$(H): InvalidTypeError.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)KeyNotFoundError.$(O) KeyNotFoundError.$(H): KeyNotFoundError.st $(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)MallocFailure.$(O) MallocFailure.$(H): MallocFailure.st $(INCLUDE_TOP)/stx/libbasic/AllocationFailure.$(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)MethodNotAppropriateError.$(O) MethodNotAppropriateError.$(H): MethodNotAppropriateError.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)NonBooleanReceiverError.$(O) NonBooleanReceiverError.$(H): NonBooleanReceiverError.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)OpenError.$(O) OpenError.$(H): OpenError.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)PositionError.$(O) PositionError.$(H): PositionError.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)
@@ -413,6 +415,7 @@
 $(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)
 $(OUTDIR)WriteError.$(O) WriteError.$(H): WriteError.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)WrongProceedabilityError.$(O) WrongProceedabilityError.$(H): WrongProceedabilityError.st $(INCLUDE_TOP)/stx/libbasic/SignalError.$(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)AbstractClassInstantiationError.$(O) AbstractClassInstantiationError.$(H): AbstractClassInstantiationError.st $(INCLUDE_TOP)/stx/libbasic/MethodNotAppropriateError.$(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)BadLiteralsError.$(O) BadLiteralsError.$(H): BadLiteralsError.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)DecodingError.$(O) DecodingError.$(H): DecodingError.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)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)
--- a/Make.spec	Wed Nov 28 10:22:05 2012 +0000
+++ b/Make.spec	Fri Nov 30 17:19:23 2012 +0000
@@ -364,6 +364,9 @@
 	ImmutableString \
 	InvalidEncodingError \
 	PipeStream \
+	MethodNotAppropriateError \
+	AbstractClassInstantiationError \
+	InvalidTypeError \
 	Symbol \
 	Unicode16String \
 	CharacterEncoderImplementations::EBCDIC \
@@ -707,6 +710,9 @@
     $(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) \
--- a/Method.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Method.st	Fri Nov 30 17:19:23 2012 +0000
@@ -397,133 +397,6 @@
 
 !Method methodsFor:'accessing'!
 
-annotateWith: annotation
-    | index |
-
-    index := self annotationIndexOf: annotation key.
-    index isNil ifTrue:[
-        annotations := annotations isNil 
-                            ifTrue:[Array with: annotation]
-                            ifFalse:[annotations copyWith:annotation]
-    ] ifFalse:[
-        annotations at: index put: annotation
-    ].
-"/    annotation annotatesMethod: self.
-
-    "
-        (Object >> #yourself) annotateWith: (Annotation namespace: 'Fictious').
-        (Object >> #yourself) annotations.
-        (Object >> #yourself) annotationAt: #namespace:
-    "
-
-    "Created: / 19-05-2010 / 16:20:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 20-05-2010 / 11:22:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 26-07-2012 / 15:47:51 / cg"
-!
-
-annotationAt: key
-    | index |
-
-    index := self annotationIndexOf: key.
-    index isNil ifTrue:[^ nil].
-    ^ self annotationAtIndex: index.
-
-    "
-        (Object >> #yourself) annotationAt: #namespace:
-    "
-
-    "Created: / 19-05-2010 / 16:16:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 02-07-2010 / 22:35:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 18-11-2011 / 14:46:21 / cg"
-    "Modified (format): / 26-07-2012 / 15:47:54 / cg"
-!
-
-annotations
-    "Returns the annotations (or an empty collection)"
-
-    annotations isNil ifTrue:[^#()].
-    "iterate over annotation array to
-     trigger lazy-loading"
-    self annotationsDo:[:ignored | ].
-    ^ annotations
-
-    "Modified: / 11-07-2010 / 19:25:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 18-11-2011 / 14:46:56 / cg"
-    "Modified (comment): / 26-07-2012 / 15:50:26 / cg"
-!
-
-annotations: anObject
-    "set the annotations"
-
-    self setAnnotations: anObject.
-"/    "iterate over annotations just to invoke
-"/     annotationAtIndex: which lazyliyinitialize annotations
-"/     and send #annotatesMethod:"
-"/    self annotationsDo:[:annotation|]
-
-    "Created: / 02-07-2010 / 22:38:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-annotationsAt: key
-
-    ^OrderedCollection 
-        streamContents:[:annotStream|
-            self annotationsAt: key do: [:annot| annotStream nextPut: annot]
-        ]
-
-    "Created: / 16-07-2010 / 11:41:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 26-07-2012 / 15:46:56 / cg"
-!
-
-annotationsAt: key do: block
-    | annots |
-
-    annots := OrderedCollection new: 1.
-    self annotationsDo: [:annot|
-        annot key == key ifTrue:[block value: annot]
-    ]
-
-    "Created: / 16-07-2010 / 11:48:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 26-07-2012 / 15:48:37 / cg"
-!
-
-annotationsAt: key1 orAt: key2
-
-    ^OrderedCollection 
-        streamContents:[:annotStream|
-            self annotationsAt: key1 orAt: key2 do: [:annot|annotStream nextPut: annot]
-        ]
-
-    "Created: / 16-07-2010 / 11:41:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 26-07-2012 / 15:49:11 / cg"
-!
-
-annotationsAt: key1 orAt: key2 do: block
-    | annots |
-
-    annots := OrderedCollection new: 1.
-    self annotationsDo:[:annot |
-        (annot key == key1 or:[annot key == key2]) ifTrue:[
-            block value: annot
-        ]
-    ]
-
-    "Created: / 16-07-2010 / 11:47:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 26-07-2012 / 15:49:30 / cg"
-!
-
-annotationsDo: aBlock
-
-    annotations isNil ifTrue:[^nil].
-    1 to: annotations size do: [:i|
-        aBlock value: (self annotationAtIndex: i)
-    ].
-
-    "Created: / 02-07-2010 / 22:33:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 11-07-2010 / 19:38:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 18-11-2011 / 14:47:06 / cg"
-!
-
 category
     "return the methods category or nil"
 
@@ -641,10 +514,12 @@
 !
 
 mclass:aClass
-    "set the method's class"
-
-    mclass == aClass ifTrue:[ ^ self ].
-
+    "set the method's class. That is the class in which I am installed.
+     This is a cache; the validity of which will be checked and the cache
+     possibly be invalidated when mclass is asked for."
+
+"/    mclass == aClass ifTrue:[ ^ self ].
+"/
 "/     (mclass notNil and:[aClass notNil]) ifTrue:[
 "/         'Method [warning]: mclass already set' errorPrintCR.
 "/     ].
@@ -959,6 +834,135 @@
     "Modified: 16.1.1997 / 01:28:25 / cg"
 ! !
 
+!Method methodsFor:'accessing-annotations'!
+
+annotateWith: annotation
+    | index |
+
+    index := self annotationIndexOf: annotation key.
+    index isNil ifTrue:[
+        annotations := annotations isNil 
+                            ifTrue:[Array with: annotation]
+                            ifFalse:[annotations copyWith:annotation]
+    ] ifFalse:[
+        annotations at: index put: annotation
+    ].
+"/    annotation annotatesMethod: self.
+
+    "
+        (Object >> #yourself) annotateWith: (Annotation namespace: 'Fictious').
+        (Object >> #yourself) annotations.
+        (Object >> #yourself) annotationAt: #namespace:
+    "
+
+    "Created: / 19-05-2010 / 16:20:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-05-2010 / 11:22:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 26-07-2012 / 15:47:51 / cg"
+!
+
+annotationAt: key
+    | index |
+
+    index := self annotationIndexOf: key.
+    index isNil ifTrue:[^ nil].
+    ^ self annotationAtIndex: index.
+
+    "
+        (Object >> #yourself) annotationAt: #namespace:
+    "
+
+    "Created: / 19-05-2010 / 16:16:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 02-07-2010 / 22:35:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-11-2011 / 14:46:21 / cg"
+    "Modified (format): / 26-07-2012 / 15:47:54 / cg"
+!
+
+annotations
+    "Returns the annotations (or an empty collection)"
+
+    annotations isNil ifTrue:[^#()].
+    "iterate over annotation array to
+     trigger lazy-loading"
+    self annotationsDo:[:ignored | ].
+    ^ annotations
+
+    "Modified: / 11-07-2010 / 19:25:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-11-2011 / 14:46:56 / cg"
+    "Modified (comment): / 26-07-2012 / 15:50:26 / cg"
+!
+
+annotations: anObject
+    "set the annotations"
+
+    self setAnnotations: anObject.
+"/    "iterate over annotations just to invoke
+"/     annotationAtIndex: which lazyliyinitialize annotations
+"/     and send #annotatesMethod:"
+"/    self annotationsDo:[:annotation|]
+
+    "Created: / 02-07-2010 / 22:38:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+annotationsAt: key
+
+    ^OrderedCollection 
+        streamContents:[:annotStream|
+            self annotationsAt: key do: [:annot| annotStream nextPut: annot]
+        ]
+
+    "Created: / 16-07-2010 / 11:41:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 26-07-2012 / 15:46:56 / cg"
+!
+
+annotationsAt: key do: block
+    | annots |
+
+    annots := OrderedCollection new: 1.
+    self annotationsDo: [:annot|
+        annot key == key ifTrue:[block value: annot]
+    ]
+
+    "Created: / 16-07-2010 / 11:48:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 26-07-2012 / 15:48:37 / cg"
+!
+
+annotationsAt: key1 orAt: key2
+
+    ^OrderedCollection 
+        streamContents:[:annotStream|
+            self annotationsAt: key1 orAt: key2 do: [:annot|annotStream nextPut: annot]
+        ]
+
+    "Created: / 16-07-2010 / 11:41:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 26-07-2012 / 15:49:11 / cg"
+!
+
+annotationsAt: key1 orAt: key2 do: block
+    | annots |
+
+    annots := OrderedCollection new: 1.
+    self annotationsDo:[:annot |
+        (annot key == key1 or:[annot key == key2]) ifTrue:[
+            block value: annot
+        ]
+    ]
+
+    "Created: / 16-07-2010 / 11:47:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 26-07-2012 / 15:49:30 / cg"
+!
+
+annotationsDo: aBlock
+
+    annotations isNil ifTrue:[^nil].
+    1 to: annotations size do: [:i|
+        aBlock value: (self annotationAtIndex: i)
+    ].
+
+    "Created: / 02-07-2010 / 22:33:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 11-07-2010 / 19:38:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 18-11-2011 / 14:47:06 / cg"
+! !
+
 !Method methodsFor:'accessing-visibility'!
 
 isIgnored
@@ -2226,8 +2230,10 @@
 setLookupObject: lookup
     "set the lookupObject (low level - use lookupObject:)"
 
-    lookupObject := lookup.
-    ObjectMemory flushCaches.
+    lookupObject ~~ lookup ifTrue:[
+        lookupObject := lookup.
+        ObjectMemory flushCaches.
+    ].
 
     "Created: / 11-07-2010 / 19:31:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -2375,7 +2381,7 @@
     |who|
 
     mclass notNil ifTrue:[
-        "/ check if this (cached) info is still valid ...
+        "/ check if this (cached) info is still valid...
         (mclass containsMethod:self) ifTrue:[
             ^ mclass
         ].
@@ -2546,16 +2552,6 @@
     "Modified: / 01-12-2010 / 13:59:58 / cg"
 !
 
-homeMethod
-    "for common protocol with blocks: if the receiver is a method,
-     return the receiver; otherwise, if its a block, return its home
-     method."
-
-    ^ self
-
-    "Created: 19.6.1997 / 16:13:12 / cg"
-!
-
 indexOfOLECall
     "return the vtable inedx, if the method contains an ole call; nil if not.
      Uses Parser to parse methods source and get the information."
@@ -3796,11 +3792,11 @@
 !Method class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.398 2012/10/23 08:23:10 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.402 2012/11/25 09:53:30 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Method.st,v 1.398 2012/10/23 08:23:10 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Method.st,v 1.402 2012/11/25 09:53:30 cg Exp §'
 !
 
 version_SVN
--- a/Number.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Number.st	Fri Nov 30 17:19:23 2012 +0000
@@ -399,7 +399,6 @@
     "Modified: / 19.11.1999 / 18:26:47 / cg"
 ! !
 
-
 !Number class methodsFor:'constants'!
 
 decimalPointCharacter 
@@ -705,6 +704,11 @@
     ^ self == Number
 ! !
 
+!Number methodsFor:'*StateSpecs-Specs'!
+
+isEqual: aNumber within: accuracy 
+	^(self - aNumber) abs < accuracy
+! !
 
 !Number methodsFor:'*grease-core'!
 
@@ -803,8 +807,11 @@
     ^ num closeFrom:self withEpsilon:eps
 
     "
-     1 closeTo:1.0000000001
-     1 closeTo:1.001
+     1 closeTo:1.0000000001        
+     1 closeTo:1.001               
+
+     1 closeTo:1.001 withEpsilon:0.1 
+     1 closeTo:1.201 withEpsilon:0.1 
 
      3.14 closeTo:(3.14 asFixedPoint:2)
      (3.14 asFixedPoint:2) closeTo:3.14
@@ -836,11 +843,29 @@
 	^ TileMorph new addArrows; setLiteral: self; addSuffixIfCan
 !
 
+rounded:n
+    "Answer the float rounded with n digits of precision"
+
+    | mult |
+
+    mult := 10 raisedTo: n.
+    ^ (((self * mult) rounded) asFloat / mult).
+
+    "
+     7 rounded:2   
+     7.1 rounded:2    
+     7.2345 rounded:2 
+     7.2385 rounded:2 
+     7.2341 rounded:3   
+     7.2345 rounded:3   
+     7.2348 rounded:3   
+    "
+!
+
 stringForReadout
     ^ self rounded printString
 ! !
 
-
 !Number methodsFor:'coercing & converting'!
 
 i
@@ -2294,17 +2319,13 @@
 !Number class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.136 2012/02/14 13:22:06 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.136 2012/02/14 13:22:06 cg Exp '
+    ^ '§Header: /cvs/stx/stx/libbasic/Number.st,v 1.137 2012/11/05 16:48:19 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: Number.st 10779 2012-02-14 22:03:08Z vranyj1 $'
+    ^ '$Id: Number.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
-
-
-
-
--- a/Object.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Object.st	Fri Nov 30 17:19:23 2012 +0000
@@ -525,7 +525,6 @@
     "Modified: 23.4.1996 / 16:00:07 / cg"
 ! !
 
-
 !Object methodsFor:'Compatibility-Dolphin'!
 
 stbFixup: anSTBInFiler at: newObjectIndex
@@ -601,12 +600,12 @@
      elL3 at:3 put:(Array new:3).
 
      copy := original copyTwoLevel.
-     (original at:2) ~~ (copy at:2) ifFalse:[self halt].
-     (original at:3) ~~ (copy at:3) ifFalse:[self halt].
+     self assert:((original at:2) ~~ (copy at:2)).
+     self assert:((original at:3) ~~ (copy at:3)).
 
      copyOfElL1 := copy at:3.
-     (elL1 at:2) == (copyOfElL1 at:2) ifFalse:[self halt].
-     (elL1 at:3) == (copyOfElL1 at:3) ifFalse:[self halt].
+     self assert:((elL1 at:2) == (copyOfElL1 at:2)).
+     self assert:((elL1 at:3) == (copyOfElL1 at:3)).
     "
 !
 
@@ -2209,6 +2208,17 @@
     |myClass sz "{ Class: SmallInteger }" t |
 
     myClass := self class.
+
+    "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
+    ].
+
     myClass isVariable ifTrue:[
         sz := self basicSize.
 
@@ -2221,18 +2231,6 @@
             self basicAt:i put:t.
         ]
     ].
-
-    "process the named instance variables"
-    sz := myClass instSize.
-    1 to:sz do:[:i |
-        t := anObject instVarAt:i.
-        aSymbol ~~ #yourself ifTrue:[
-            t := t perform:aSymbol
-        ].
-        self instVarAt:i put:t
-    ].
-
-    ^ self
 !
 
 cloneInstanceVariablesFrom:aPrototype
@@ -2329,25 +2327,35 @@
          This method DOES NOT handle cycles/self-refs and does NOT preserve object identity;
          i.e. identical references in the source are copied multiple times into the copy."
 
-    |newObject class index|
-
-    level == 1 ifTrue:[^ self shallowCopy].
-
-    class := self class.
-    newObject := self clone.
-    newObject == self ifTrue: [^ self].
+    |newObject newLevel class sz "{Class: SmallInteger}" newInst|
+
+    newObject := self copy.
+    newObject == self ifTrue: [^ self].   "copy of nil, true, false, ... is self"
+    level == 1 ifTrue:[^ newObject].
+    newLevel := level - 1.
+
+    class := newObject class.
+
+    "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).
+        ].
+    ].
+
     class isVariable ifTrue:[
-        index := self basicSize.
-        [index > 0] whileTrue:[
-            newObject basicAt: index put: ((self basicAt: index) copyToLevel:(level-1)).
-            index := index - 1
+        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).
+            ].
         ]
     ].
-    index := class instSize.
-    [index > 0] whileTrue:[
-        newObject instVarAt: index put: ((self instVarAt: index) copyToLevel:(level-1)).
-        index := index - 1
-    ].
     ^ newObject
 
     "
@@ -2462,34 +2470,48 @@
      This method DOES handle cycles/self references."
 
     |myClass aCopy
-     sz "{ Class: SmallInteger }"
+     basicSize "{ Class: SmallInteger }"
+     instSize  "{ Class: SmallInteger }"
      iOrig iCopy|
 
     myClass := self class.
-"/    (myClass whichClassImplements:#deepCopyUsing:) ~~ Object ifTrue:[
-"/        ^ self deepCopyUsing:aDictionary.
-"/    ].
-
     myClass isVariable ifTrue:[
-        sz := self basicSize.
-        aCopy := myClass basicNew:sz.
+        basicSize := self basicSize.
+        aCopy := myClass basicNew:basicSize.
     ] ifFalse:[
-        sz := 0.
+        basicSize := 0.
         aCopy := myClass basicNew
     ].
     aCopy setHashFrom:self.
     aDictionary at:self put:aCopy.
 
     "
+     copy the instance variables
+    "
+    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
+            ]
+        ]
+    ].
+
+    "
      copy indexed instvars - if any
     "
-    sz ~~ 0 ifTrue:[
+    basicSize ~~ 0 ifTrue:[
         myClass isBits ifTrue:[
             "block-copy indexed instvars"
-            aCopy replaceFrom:1 to:sz with:self startingAt:1
+            aCopy replaceFrom:1 to:basicSize with:self startingAt:1
         ] ifFalse:[
             "individual deep copy the indexed variables"
-            1 to:sz do:[:i |
+            1 to:basicSize do:[:i |
                 iOrig := self basicAt:i.
                 iOrig notNil ifTrue:[
                     "/ used to be dict-includesKey-ifTrue[dict-at:],
@@ -2504,22 +2526,6 @@
         ]
     ].
 
-    "
-     copy the instance variables
-    "
-    sz := myClass instSize.
-    1 to:sz 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
-            ]
-        ]
-    ].
     aCopy perform:postCopySelector withOptionalArgument:self and:aDictionary.
     ^ aCopy
 
@@ -3838,7 +3844,7 @@
      is not clear which method to execute in response to
      aMessage. 
      Such situation may occur when a current selector namespace
-     imports two namespaces and both defines method with
+     imports two namespaces and both define a method with the
      requested selector."
 
     <context: #return>
@@ -3847,6 +3853,7 @@
     ^ AmbiguousMessage raiseRequestWith:aMessage
 
     "Created: / 21-07-2010 / 15:44:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 02-11-2012 / 10:14:42 / cg"
 !
 
 appropriateDebugger:aSelector
@@ -4186,8 +4193,14 @@
 
     <resource: #skipInDebuggersWalkBack>
 
-    ^ self error:'bad assign of ' , self printString ,
-                  ' (' , self class name , ') to integer-typed variable'
+"/    ^ 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')
+
+    "Modified: / 02-11-2012 / 10:25:36 / cg"
 !
 
 invalidCodeObject
@@ -4197,19 +4210,23 @@
 
     <resource: #skipInDebuggersWalkBack>
 
-    self error:'not an executable code object'
-
-    "Created: 1.8.1997 / 00:16:44 / cg"
+    "/ self error:'not an executable code object'
+    ^ ExecutionError 
+        raiseRequestErrorString:'not an executable code object'
+
+    "Created: / 01-08-1997 / 00:16:44 / cg"
 !
 
 invalidMessage
     "{ Pragma: +optSpace }"
 
-    "this is sent by ST/V code - its the same as #shouldNotImplement"
+    "this is sent by ST/V code - it's the same as #shouldNotImplement"
 
     <resource: #skipInDebuggersWalkBack>
 
     ^ self shouldNotImplement
+
+    "Modified (comment): / 02-11-2012 / 10:11:18 / cg"
 !
 
 mustBeRectangle
@@ -4219,7 +4236,11 @@
 
     <resource: #skipInDebuggersWalkBack>
 
-    ^ self error:'argument must be a Rectangle'
+    "/ ^ self error:'argument must be a Rectangle'
+    ^ InvalidTypeError
+        raiseRequestErrorString:'argument must be a Rectangle'
+
+    "Modified: / 02-11-2012 / 10:24:53 / cg"
 !
 
 mustBeString
@@ -4229,7 +4250,11 @@
 
     <resource: #skipInDebuggersWalkBack>
 
-    ^ self error:'argument must be a String'
+    "/ ^ self error:'argument must be a String'
+    ^ InvalidTypeError
+        raiseRequestErrorString:'argument must be a String'
+
+    "Modified: / 02-11-2012 / 10:24:35 / cg"
 !
 
 notIndexed
@@ -4242,7 +4267,7 @@
     <resource: #skipInDebuggersWalkBack>
 
     ^ SubscriptOutOfBoundsError
-        raiseErrorString:'receiver has no indexed variables'
+        raiseRequestErrorString:'receiver has no indexed variables'
 
     "Modified: 26.7.1996 / 16:43:13 / cg"
 !
@@ -4255,7 +4280,11 @@
 
     <resource: #skipInDebuggersWalkBack>
 
-    ^ self error:'method/functionality is not yet implemented'
+    "/ ^ self error:'method/functionality is not yet implemented'
+    ^ MethodNotAppropriateError 
+        raiseRequestErrorString:'method/functionality is not yet implemented'
+
+    "Modified: / 02-11-2012 / 10:24:12 / cg"
 !
 
 openDebuggerOnException:ex
@@ -4473,8 +4502,10 @@
 shouldNeverBeReached
     "report an error that this point may never be reached."
 
-    ^ self
-        error:'Oops, this may never reached. Something somewhere was terribly wrong.'.
+    <resource: #skipInDebuggersWalkBack>
+
+    ^ ExecutionError
+        raiseRequestErrorString:'Oops, this may never reached. Something somewhere was terribly wrong.'.
 
     "Modified: / 20-04-2005 / 18:59:28 / janfrog"
 !
@@ -4482,9 +4513,14 @@
 shouldNeverBeSent
     "report an error that this message may never be sent to the reciever"
 
-    ^ self error:'This message never may be sent to me!!'.
+    <resource: #skipInDebuggersWalkBack>
+
+    "/ ^ self error:'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"
 !
 
 shouldNotImplement
@@ -4495,9 +4531,11 @@
 
     <resource: #skipInDebuggersWalkBack>
 
-    ^ self error:'method/functionality not appropriate for this class'
-
-    "Modified: 8.5.1996 / 09:09:44 / cg"
+    "/ self error:'method/functionality not appropriate for this class'
+    ^ MethodNotAppropriateError 
+        raiseRequestErrorString:'method/functionality not appropriate for this class'
+
+    "Modified: / 02-11-2012 / 10:02:25 / cg"
 !
 
 subclassResponsibility
@@ -4559,8 +4597,15 @@
 
     <resource: #skipInDebuggersWalkBack>
 
-    ^ self error:'bad assign of ' , self printString ,
-                  ' (' , self class name , ') to typed variable'
+"/    ^ self error:'bad assign of ' , self printString ,
+"/                  ' (' , self class name , ') to typed variable'
+
+    ^ InvalidTypeError
+        raiseRequestErrorString:
+            ('bad assign of ' , self printString ,
+                  ' (' , self class name , ') to typed variable')
+
+    "Modified: / 02-11-2012 / 10:19:15 / cg"
 ! !
 
 !Object methodsFor:'evaluation'!
@@ -9511,11 +9556,11 @@
 !Object class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.698 2012/09/30 15:33:40 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.703 2012/11/24 13:56:04 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Object.st,v 1.698 2012/09/30 15:33:40 stefan Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Object.st,v 1.703 2012/11/24 13:56:04 stefan Exp §'
 !
 
 version_SVN
--- a/OpenError.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/OpenError.st	Fri Nov 30 17:19:23 2012 +0000
@@ -39,11 +39,10 @@
 pathName
     "the name of the file/device which failed to open"
 
-    (parameter isNil or:[parameter isString]) ifTrue:[
-        ^ parameter
+    (parameter respondsTo:#pathName) ifTrue:[
+        ^ parameter pathName.
     ].
-
-    ^ parameter pathName
+    ^ parameter
 
     "Modified: / 16-01-2008 / 20:24:24 / cg"
 !
@@ -63,7 +62,7 @@
 
     p := self pathName.
     p notEmptyOrNil ifTrue:[
-        description := description, ': ', p
+        description := description, ': ', p printString
     ].
     ^ description 
 
@@ -75,11 +74,11 @@
 !OpenError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/OpenError.st,v 1.9 2008/12/08 11:50:45 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/OpenError.st,v 1.10 2012/11/14 22:31:19 stefan Exp $'
 !
 
 version_SVN
-    ^ '$Id: OpenError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Id: OpenError.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 
--- a/PeekableStream.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/PeekableStream.st	Fri Nov 30 17:19:23 2012 +0000
@@ -1034,28 +1034,20 @@
     "Modified: 15.5.1996 / 17:51:42 / cg"
 !
 
-nextWord
-    "return the next characters which form an alphanumeric word
-     (i.e. everything upTo (but excluding) the next non alphanumeric
-      element)"
-
-    ^ self nextAlphaNumericWord
-
-    "Modified: 15.5.1996 / 17:39:32 / cg"
-! !
+ !
 
 !PeekableStream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: PeekableStream.st 10861 2012-10-31 18:09:01Z vranyj1 $'
+    ^ '$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.40 2011/02/05 10:40:33 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/PeekableStream.st,v 1.41 2012/11/19 15:00:10 stefan Exp §'
 !
 
 version_SVN
-    ^ '$Id: PeekableStream.st 10861 2012-10-31 18:09:01Z vranyj1 $'
+    ^ '$Id: PeekableStream.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 PeekableStream initialize!
--- a/ProjectDefinition.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/ProjectDefinition.st	Fri Nov 30 17:19:23 2012 +0000
@@ -1069,7 +1069,6 @@
     self classNamesAndAttributes:newSpec usingCompiler:compilerOrNil
 ! !
 
-
 !ProjectDefinition class methodsFor:'accessing - tests'!
 
 excludedFromTestSuite
@@ -5881,10 +5880,15 @@
     ].
     [
 	Class withoutUpdatingChangesDo:[
-	    packagesToLoad do:[:aPackage |
-		(PackagesBeingLoaded includes:aPackage) ifFalse:[
-		    PackagesBeingLoaded add:aPackage.
-		    Smalltalk loadPackage:aPackage asAutoloaded:asAutoloaded.
+            packagesToLoad do:[:eachPackageID |
+                |cls|
+
+                cls := ProjectDefinition definitionClassForPackage:eachPackageID.
+                (cls isNil or:[cls projectIsLoaded not]) ifTrue:[                        
+                    (PackagesBeingLoaded includes:eachPackageID) ifFalse:[
+                        PackagesBeingLoaded add:eachPackageID.
+                        Smalltalk loadPackage:eachPackageID asAutoloaded:asAutoloaded.
+                    ]
 		]
 	    ].
 	].
@@ -6104,13 +6108,13 @@
 	    self
 		addReferencesToClassesFromGlobalsInMethods:
 		    (aClass theNonMetaclass methodDictionary values
-			select:[:m | m package = aClass package])
+                        select:[:m | m isExtension not])
 		to:usedClassReasons.
 
 	    self
 		addReferencesToClassesFromGlobalsInMethods:
 		    (aClass theMetaclass methodDictionary values
-			select:[:m | m package = aClass package])
+                        select:[:m | m isExtension not])
 		to:usedClassReasons.
 	].
 
@@ -6650,7 +6654,7 @@
      called before checking in build support files"
 
     |emptyProjects nonProjects emptyOrNonProjects classesInImage
-     classesInDescription onlyInImage onlyInDescription missingPools|
+     classesInDescription onlyInImage onlyInDescription missingPools myPackage|
 
     emptyProjects := Set withAll:self subProjects.
     Smalltalk allClassesDo:[:cls |
@@ -6677,7 +6681,8 @@
         ].
     ].
 
-    classesInImage := Smalltalk allClasses select:[:cls | (cls package = self package) and:[cls isPrivate not]].
+    myPackage := self package.
+    classesInImage := Smalltalk allClasses select:[:cls | (cls package == myPackage) and:[cls isPrivate not]].
     "/ classesInDescription := self classes asIdentitySet.
     classesInDescription := IdentitySet new.
     ((self compiled_classNamesForPlatform:(OperatingSystem platformName))
@@ -6926,15 +6931,16 @@
 !ProjectDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ProjectDefinition.st 10875 2012-11-28 10:22:05Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.397 2012/11/21 16:57:05 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.395 2012/09/26 19:17:12 cg Exp §'
+    ^ 'Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.397 2012/11/21 16:57:05 cg Exp '
 !
 
 version_SVN
-    ^ '$Id:: ProjectDefinition.st 10875 2012-11-28 10:22:05Z vranyj1                                                                $'
+    ^ '$Id:: ProjectDefinition.st 10876 2012-11-30 17:19:23Z vranyj1                                                                $'
 ! !
 
 ProjectDefinition initialize!
+
--- a/RecursiveStoreError.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/RecursiveStoreError.st	Fri Nov 30 17:19:23 2012 +0000
@@ -15,7 +15,7 @@
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
-	category:'Kernel-Exceptions'
+	category:'Kernel-Exceptions-Errors'
 !
 
 !RecursiveStoreError class methodsFor:'documentation'!
@@ -55,11 +55,11 @@
 !RecursiveStoreError class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/RecursiveStoreError.st,v 1.1 2004/04/23 11:41:00 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/RecursiveStoreError.st,v 1.2 2012/11/23 12:14:02 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: RecursiveStoreError.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Id: RecursiveStoreError.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 RecursiveStoreError initialize!
--- a/Semaphore.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Semaphore.st	Fri Nov 30 17:19:23 2012 +0000
@@ -292,6 +292,20 @@
 
 !Semaphore class methodsFor:'instance creation'!
 
+cleanup
+    "an emergency helper: manually signal all semaphores which were held by a now dead process.
+     Can only (;-?) happen, if a semaphore-holding process was hard terminated 
+     (i.e. no ensure handling happened), and semas remain in a bad state."
+
+    self allInstancesDo:[:sema |
+        (sema count == 0 
+        and:[sema lastOwner notNil
+        and:[sema lastOwner isDead]]) ifTrue:[
+            sema signal
+        ]
+    ]
+!
+
 forMutualExclusion
     "create & return a new semaphore which allows exactly one process to
      wait on it without blocking. This type of semaphore is used
@@ -425,14 +439,29 @@
      NOTE: Must be called when known that waitingProcesses is nonNil and
            also with blocked interrupts"
 
-    |processes|
+    |processes anyDead|
 
     processes := waitingProcesses.
 "/ do not set to nil - a waiting process may be suspended and will not be resumed...
 "/    waitingProcesses := nil.
 
     "/ todo: resume by priority; higher first.
-    processes do:[:eachProcess | Processor resume:eachProcess].
+    anyDead := false.
+    processes do:[:eachProcess | 
+        eachProcess isDead ifTrue:[
+            Transcript show:'oops: a dead process: '; showCR:eachProcess.
+            anyDead := true.
+        ] ifFalse:[
+            Processor resume:eachProcess
+        ]
+    ].
+    anyDead ifTrue:[
+        [
+            processes := processes reject:[:p | p isNil or:[p isDead]]
+        ] valueUninterruptably.
+    ].
+
+    "Modified: / 06-11-2012 / 14:27:09 / anwild"
 ! !
 
 !Semaphore methodsFor:'private-accessing'!
@@ -948,15 +977,15 @@
 !Semaphore class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.86 2011/08/11 12:38:01 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.87 2012/11/07 12:29:01 anwild Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.86 2011/08/11 12:38:01 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.87 2012/11/07 12:29:01 anwild Exp §'
 !
 
 version_SVN
-    ^ '$Id: Semaphore.st 10761 2012-01-19 11:46:00Z vranyj1 $'
+    ^ '$Id: Semaphore.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 
--- a/SmallInteger.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/SmallInteger.st	Fri Nov 30 17:19:23 2012 +0000
@@ -1180,10 +1180,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 +1196,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 +1227,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
+        ]
      ]
     "
 
@@ -3349,34 +3349,41 @@
 !
 
 intlog10
-    "return the truncation of log10 of the receiver -
-     stupid implementation; used to find out the number of digits needed
+    "return the truncation of log10 of the receiver.
+     The same as (self log:10) floor.
+     Stupid implementation, which is used to find out the number of digits needed
      to print a number/and for conversion to a LargeInteger.
      Implemented that way, to allow for tiny systems (PDAs) without a Float class
      (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 < 10 ifTrue:[^ 0].
-    self < 100 ifTrue:[^ 1].
-    self < 1000 ifTrue:[^ 2].
-    self < 10000 ifTrue:[^ 3].
-    self < 100000 ifTrue:[^ 4].
-    self < 1000000 ifTrue:[^ 5].
-    self < 10000000 ifTrue:[^ 6].
-    self < 100000000 ifTrue:[^ 7].
+    self < 10000 ifTrue:[
+        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 < 1000000000 ifTrue:[^ 8].
     ^ 9
 
     "
       99 intlog10
-      100 intlog10
+      100 intlog10 
+      101 intlog10        
+      (101 log:10) floor  
       120 intlog10
       -1 intlog10
     "
@@ -4113,13 +4120,13 @@
 !SmallInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.196 2012/07/06 16:33:40 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.197 2012/11/04 15:06:59 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.196 2012/07/06 16:33:40 stefan Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.197 2012/11/04 15:06:59 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: SmallInteger.st 10824 2012-07-18 16:55:48Z vranyj1 $'
+    ^ '$Id: SmallInteger.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
--- a/Smalltalk.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Smalltalk.st	Fri Nov 30 17:19:23 2012 +0000
@@ -69,127 +69,127 @@
 
 
     [Instance variables:]
-                                        none - all handling is done in the VM
+					none - all handling is done in the VM
 
     [Class variables:]
 
-        StartBlocks     <Collection>    blocks to be executed in a separate process after
-                                        everything has been initialized. These blocks will
-                                        be deleted after execution and therefore not be
-                                        executed after an image restart. Initial processes
-                                        (such as the Launcher) are usually started here.
-                                        These blocks are added by smalltalk.rc/private.rc etc.
-                                        via #addStartBlock during early initialization.
-
-        ImageStartBlocks
-                        <Collection>    blocks to be executed in a separate process after
-                                        everything has been initialized. These blocks will be
-                                        executed after an image restart.
-                                        These blocks are usually added by smalltalk_r.rc etc.
-
-        ExitBlocks      <Collection>    blocks to evaluate before system is
-                                        left. Not currently used (GNU-ST compatibility).
-
-        SystemPath      <Collection>    path to search for system files (sources, bitmaps etc)
-                                        Set to a default here, but typically changed from some
-                                        startup.rc file
-
-        PackagePath     <Collection>    path to search for package.
-                                        This is going to replace the above systemPath, and a classes
-                                        resources will eventually searched in its package directory.
-                                        This list defines the path, where packages are searched for,
-                                        initially this is something like /opt/smalltalk/packages.
-                                        Set to a default here, but typically changed from some
-                                        startup.rc file
-
-        StartupClass    <Class>         class and selector, where the system starts up
-        StartupSelector <Symbol>        (right after VM initialization)
-        StartupArguments <Array>        If an image is saved while those being nonNil,
-                                        the image will come up there.
-                                        Allows for customized images to be generated from a standard ST/X.
-                                        StandAlone programs also set those during initialization.
-
-        CommandLine          <String>   Unix (OS-) command line
-
-        CommandName          <String>   the command (i.e. argv[0])
-
-        CommandLineArguments <Array>    Unix (OS-) command line arguments broken into words
-                                        CommandName has been stripped off.
-                                        (initially set by the VM)
-
-        SilentLoading   <Boolean>       OBSOLETE:
-                                        suppresses messages during fileIn and in compiler
-                                        (can be set to true from a customized main.c)
-
-        VerboseLoading   <Boolean>      generate messages during fileIn and in compiler
-                                        (can be set to true from a customized main.c)
-
-        Initializing    <Boolean>       true while (re-)initializing
-                                        Controls the behavior of certain error
-                                        reporters (for example: suppress dialogBoxes)
-                                        while the system is not yet fit for full operation.
-
-        StandAlone      <Boolean>       true, if this is a standalone app;
-                                        if true the process scheduler watches for
-                                        which processes are still running, and
-                                        exits ST/X, when the last non-background
-                                        and non-system process exits.
-                                        Can be set in an application-specific startup script,
-                                        or, for standAlone programs, by C-code during initialization.
-
-        HeadlessOperation               if true, a non-existing Display connection
-                        <Boolean>       will NOT lead to an error-exit during startup.
-                                        Default is false.
-                                        Can be set in an application-specific startup script,
-                                        or, for standAlone programs, by C-code during initialization.
-
-        LogDoits        <Boolean>       if true, doits are also logged in the changes
-                                        file. Default is false, since the changes file
-                                        may become huge if every tiny doIt is saved there ...
-
-        LoadBinaries    <Boolean>       if true, we attempt to load classes rom a binary
-                                        file, if present. If false, this is always suppressed.
-
-        SaveEmergencyImage <Boolean>    if true (the default), an emergency image
-                                        is saved, if the main Display looses its
-                                        connection. This is useful if you have a
-                                        flaky display connection (serial line)
-                                        and want to have your stuff saved automatically
-                                        in case of a broken connection.
+	StartBlocks     <Collection>    blocks to be executed in a separate process after
+					everything has been initialized. These blocks will
+					be deleted after execution and therefore not be
+					executed after an image restart. Initial processes
+					(such as the Launcher) are usually started here.
+					These blocks are added by smalltalk.rc/private.rc etc.
+					via #addStartBlock during early initialization.
+
+	ImageStartBlocks
+			<Collection>    blocks to be executed in a separate process after
+					everything has been initialized. These blocks will be
+					executed after an image restart.
+					These blocks are usually added by smalltalk_r.rc etc.
+
+	ExitBlocks      <Collection>    blocks to evaluate before system is
+					left. Not currently used (GNU-ST compatibility).
+
+	SystemPath      <Collection>    path to search for system files (sources, bitmaps etc)
+					Set to a default here, but typically changed from some
+					startup.rc file
+
+	PackagePath     <Collection>    path to search for package.
+					This is going to replace the above systemPath, and a classes
+					resources will eventually searched in its package directory.
+					This list defines the path, where packages are searched for,
+					initially this is something like /opt/smalltalk/packages.
+					Set to a default here, but typically changed from some
+					startup.rc file
+
+	StartupClass    <Class>         class and selector, where the system starts up
+	StartupSelector <Symbol>        (right after VM initialization)
+	StartupArguments <Array>        If an image is saved while those being nonNil,
+					the image will come up there.
+					Allows for customized images to be generated from a standard ST/X.
+					StandAlone programs also set those during initialization.
+
+	CommandLine          <String>   Unix (OS-) command line
+
+	CommandName          <String>   the command (i.e. argv[0])
+
+	CommandLineArguments <Array>    Unix (OS-) command line arguments broken into words
+					CommandName has been stripped off.
+					(initially set by the VM)
+
+	SilentLoading   <Boolean>       OBSOLETE:
+					suppresses messages during fileIn and in compiler
+					(can be set to true from a customized main.c)
+
+	VerboseLoading   <Boolean>      generate messages during fileIn and in compiler
+					(can be set to true from a customized main.c)
+
+	Initializing    <Boolean>       true while (re-)initializing
+					Controls the behavior of certain error
+					reporters (for example: suppress dialogBoxes)
+					while the system is not yet fit for full operation.
+
+	StandAlone      <Boolean>       true, if this is a standalone app;
+					if true the process scheduler watches for
+					which processes are still running, and
+					exits ST/X, when the last non-background
+					and non-system process exits.
+					Can be set in an application-specific startup script,
+					or, for standAlone programs, by C-code during initialization.
+
+	HeadlessOperation               if true, a non-existing Display connection
+			<Boolean>       will NOT lead to an error-exit during startup.
+					Default is false.
+					Can be set in an application-specific startup script,
+					or, for standAlone programs, by C-code during initialization.
+
+	LogDoits        <Boolean>       if true, doits are also logged in the changes
+					file. Default is false, since the changes file
+					may become huge if every tiny doIt is saved there ...
+
+	LoadBinaries    <Boolean>       if true, we attempt to load classes rom a binary
+					file, if present. If false, this is always suppressed.
+
+	SaveEmergencyImage <Boolean>    if true (the default), an emergency image
+					is saved, if the main Display looses its
+					connection. This is useful if you have a
+					flaky display connection (serial line)
+					and want to have your stuff saved automatically
+					in case of a broken connection.
 
     strictly private classVariables (helpers):
 
-        CachedClasses   <Collection>    known classes (cached for faster class enumeration)
-
-        CachedAbbreviations
-                        <Dictionary>    className to filename mappings
-
-        RealSystemPath  <Collection>    cached collection of directories along the path
-                                        which really exist. Caching avoids long checks
-                                        for existing directories on broken NFS volumes.
-
-        SourcePath      <Collection>    cached names of really existing directories
-                                        These are remembered, as in NFS systems,
-        ResourcePath                    the time to lookup files may become long
-        BinaryPath                      (especially, if some directories are on machines
-        FileInPath                      which are not up ...).
-                                        Therefore, the set of really
-                                        existing directories is cached when the SystemPath
-                                        is walked the first time.
-                                        A consequence is that you have to invoke
-                                        flushSystemPath, when you create any of those
-                                        directories while running
-                                        (and want the running ST/X to look there)
+	CachedClasses   <Collection>    known classes (cached for faster class enumeration)
+
+	CachedAbbreviations
+			<Dictionary>    className to filename mappings
+
+	RealSystemPath  <Collection>    cached collection of directories along the path
+					which really exist. Caching avoids long checks
+					for existing directories on broken NFS volumes.
+
+	SourcePath      <Collection>    cached names of really existing directories
+					These are remembered, as in NFS systems,
+	ResourcePath                    the time to lookup files may become long
+	BinaryPath                      (especially, if some directories are on machines
+	FileInPath                      which are not up ...).
+					Therefore, the set of really
+					existing directories is cached when the SystemPath
+					is walked the first time.
+					A consequence is that you have to invoke
+					flushSystemPath, when you create any of those
+					directories while running
+					(and want the running ST/X to look there)
 
 
     [author:]
-        Claus Gittinger
+	Claus Gittinger
 
     [see also:]
-        ObjectMemory
-        StandaloneStartup
-        GetOpt
-        ReadEvalPrintLoop
+	ObjectMemory
+	StandaloneStartup
+	GetOpt
+	ReadEvalPrintLoop
 "
 !
 
@@ -307,20 +307,20 @@
     |envString i langString terrString|
 
     StandAlone isNil ifTrue:[
-        StandAlone := false.
+	StandAlone := false.
     ].
     HeadlessOperation isNil ifTrue:[
-        HeadlessOperation := false.
+	HeadlessOperation := false.
     ].
 
     "
      extract Language and LanguageTerritory from LANG variable.
      valid are for example:
-                            en_en / en
-                            en_us
-                            en_gb
-                            de_de / de
-                            de_at       (for Austria)
+			    en_en / en
+			    en_us
+			    en_gb
+			    de_de / de
+			    de_at       (for Austria)
     "
 
     Language := #en.
@@ -328,41 +328,41 @@
 
 
     "Format of LANG is: language[_territory][.codeset][@modifier]
-        language        ISO-639  Language code
-        territory       ISO-3166 Contry code"
+	language        ISO-639  Language code
+	territory       ISO-3166 Contry code"
 
     envString := OperatingSystem getLanguage.
     envString size > 0 ifTrue:[
-        i := envString indexOf:$@.
-        (i ~~ 0) ifTrue:[
-            LanguageModifier := (envString copyFrom:(i + 1)) asLowercase asSymbol.
-            envString := envString copyTo:(i - 1).
-        ] ifFalse:[
-            LanguageModifier := nil.
-        ].
-        i := envString indexOf:$..
-        (i ~~ 0) ifTrue:[
-            LanguageCodeset := (envString copyFrom:(i + 1)) asLowercase asSymbol.
-            envString := envString copyTo:(i - 1).
-        ] ifFalse:[
-            LanguageCodeset := #'iso8859-1'.
-        ].
-        i := envString indexOf:$_.
-        (i == 0) ifTrue:[
-            langString := envString.
-            terrString := envString
-        ] ifFalse:[
-            langString := envString copyTo:(i - 1).
-            terrString := envString copyFrom:(i + 1)
-        ].
-        langString := langString asLowercase.
-        terrString := terrString asLowercase.
-        (langString = 'c' or:[terrString = 'c']) ifTrue:[
-            ('Smalltalk [info]: ignoring wrong LANG setting (',langString,'_',terrString,') - using english') infoPrintCR.
-        ] ifFalse:[
-            Language := langString asSymbol.
-            LanguageTerritory := terrString asSymbol
-        ]
+	i := envString indexOf:$@.
+	(i ~~ 0) ifTrue:[
+	    LanguageModifier := (envString copyFrom:(i + 1)) asLowercase asSymbol.
+	    envString := envString copyTo:(i - 1).
+	] ifFalse:[
+	    LanguageModifier := nil.
+	].
+	i := envString indexOf:$..
+	(i ~~ 0) ifTrue:[
+	    LanguageCodeset := (envString copyFrom:(i + 1)) asLowercase asSymbol.
+	    envString := envString copyTo:(i - 1).
+	] ifFalse:[
+	    LanguageCodeset := #'iso8859-1'.
+	].
+	i := envString indexOf:$_.
+	(i == 0) ifTrue:[
+	    langString := envString.
+	    terrString := envString
+	] ifFalse:[
+	    langString := envString copyTo:(i - 1).
+	    terrString := envString copyFrom:(i + 1)
+	].
+	langString := langString asLowercase.
+	terrString := terrString asLowercase.
+	(langString = 'c' or:[terrString = 'c']) ifTrue:[
+	    ('Smalltalk [info]: ignoring wrong LANG setting (',langString,'_',terrString,') - using english') infoPrintCR.
+	] ifFalse:[
+	    Language := langString asSymbol.
+	    LanguageTerritory := terrString asSymbol
+	]
     ].
 
     "
@@ -583,8 +583,8 @@
      This one is the very first entry into the smalltalk world,
      right after startup, ususally immediately followed by Smalltalk>>start.
      Notice:
-        this is not called when an image is restarted; in this
-        case the show starts in Smalltalk>>restart."
+	this is not called when an image is restarted; in this
+	case the show starts in Smalltalk>>restart."
 
     |idx|
 
@@ -594,7 +594,7 @@
     AbstractOperatingSystem initializeConcreteClass.
 
     CommandLineArguments isNil ifTrue:[
-        CommandLineArguments := #('stx').
+	CommandLineArguments := #('stx').
     ].
     CommandLine := CommandLineArguments copy.
     CommandLineArguments := CommandLineArguments asOrderedCollection.
@@ -606,39 +606,39 @@
     DebuggingStandAlone := false.
 
     StandAlone ifTrue:[
-        InfoPrinting := false.
-        ObjectMemory infoPrinting:false.
-
-        idx := CommandLineArguments indexOf:'--debug'.
-        idx ~~ 0 ifTrue:[
-            DebuggingStandAlone := true.
-        ].
-        DebuggingStandAlone ifTrue:[
-            Inspector := MiniInspector.
-            Debugger := MiniDebugger.
-        ].
+	InfoPrinting := false.
+	ObjectMemory infoPrinting:false.
+
+	idx := CommandLineArguments indexOf:'--debug'.
+	idx ~~ 0 ifTrue:[
+	    DebuggingStandAlone := true.
+	].
+	DebuggingStandAlone ifTrue:[
+	    Inspector := MiniInspector.
+	    Debugger := MiniDebugger.
+	].
     ] ifFalse:[
-        "/
-        "/ define low-level debugging tools - graphical classes are not prepared yet
-        "/ to handle things.
-        "/ This will bring us into the MiniDebugger when an error occurs during startup.
-        "/
-        Inspector := MiniInspector.
-        Debugger := MiniDebugger.
+	"/
+	"/ define low-level debugging tools - graphical classes are not prepared yet
+	"/ to handle things.
+	"/ This will bring us into the MiniDebugger when an error occurs during startup.
+	"/
+	Inspector := MiniInspector.
+	Debugger := MiniDebugger.
     ].
 
     Error handle:[:ex |
-        StandAlone ifTrue:[
-            DebuggingStandAlone ifFalse:[
-                'Startup Error - use --debug command line argument for more info' errorPrintCR.
-                Smalltalk exit:1.
-            ].
-            'Startup Error' errorPrintCR.
-            thisContext fullPrintAll.
-        ].
-        ex reject.
+	StandAlone ifTrue:[
+	    DebuggingStandAlone ifFalse:[
+		'Startup Error - use --debug command line argument for more info' errorPrintCR.
+		Smalltalk exit:1.
+	    ].
+	    'Startup Error' errorPrintCR.
+	    thisContext fullPrintAll.
+	].
+	ex reject.
     ] do:[
-        self basicInitializeSystem
+	self basicInitializeSystem
     ].
 
     "Modified: / 12-10-2010 / 11:27:47 / cg"
@@ -810,10 +810,10 @@
 
 declarePoolDictionary:poolDictionaryName
     ^ SharedPool subclass:(poolDictionaryName asSymbol)
-        instanceVariableNames:''
-        classVariableNames:''
-        poolDictionaries:''
-        category:nil
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:nil
 
     "Modified: / 07-02-2012 / 15:56:16 / cg"
 !
@@ -939,9 +939,9 @@
     |val|
 
     (self includesKey:aKey) ifTrue:[
-        (val := self at:aKey) notNil ifTrue:[
-            ^ aBlock value:val
-        ]
+	(val := self at:aKey) notNil ifTrue:[
+	    ^ aBlock value:val
+	]
     ].
     ^ nil
 
@@ -2152,29 +2152,29 @@
     packageDirName := self getPackageFileName:packageDirName.
 
     (packageDirName notNil and:[Class tryLocalSourceFirst]) ifTrue:[
-        (self loadExtensionsFromDirectory:packageDirName language: language) ifTrue:[
-            ^ true.
-        ].
-        packageDirName := nil.  "do not try again"
+	(self loadExtensionsFromDirectory:packageDirName language: language) ifTrue:[
+	    ^ true.
+	].
+	packageDirName := nil.  "do not try again"
     ].
 
     "
      if there is a sourceCodeManager, ask it first for the extensions
     "
     (Smalltalk at:#AbstractSourceCodeManager) notNil ifTrue:[
-        mgr := AbstractSourceCodeManager managerForPackage: aPackageId
+	mgr := AbstractSourceCodeManager managerForPackage: aPackageId
     ].
     mgr notNil ifTrue:[
-        extensionsFilename := 'extensions.' , language sourceFileSuffix.
-
-        projectDefinition := ProjectDefinition definitionClassForPackage:aPackageId.
-        projectDefinition notNil ifTrue:[
-            mod := aPackageId asPackageId module.
-            dir := aPackageId asPackageId directory.
-            extensionsRevisionString := projectDefinition perform:(mgr nameOfVersionMethodForExtensions) ifNotUnderstood:nil.
-            extensionsRevisionString notNil ifTrue:[
-                extensionsRevisionInfo := mgr revisionInfoFromString:extensionsRevisionString inClass:nil.
-                extensionsRevisionInfo notNil ifTrue:[
+	extensionsFilename := 'extensions.' , language sourceFileSuffix.
+
+	projectDefinition := ProjectDefinition definitionClassForPackage:aPackageId.
+	projectDefinition notNil ifTrue:[
+	    mod := aPackageId asPackageId module.
+	    dir := aPackageId asPackageId directory.
+	    extensionsRevisionString := projectDefinition perform:(mgr nameOfVersionMethodForExtensions) ifNotUnderstood:nil.
+	    extensionsRevisionString notNil ifTrue:[
+		extensionsRevisionInfo := mgr revisionInfoFromString:extensionsRevisionString inClass:nil.
+		extensionsRevisionInfo notNil ifTrue:[
 		    extensionsRevisionInfo fileName = extensionsFilename ifFalse:[
 			"JV@2011-10-23: following condition is never satisfied for
 			 filed-in packages. The whole scheme of extensionVersion_XXX
@@ -2190,33 +2190,33 @@
 			    ^ false
 			]
 		    ]
-                ]
-            ].
-            SourceCodeManagerError handle:[:ex |
-            ] do:[
-                inStream := mgr streamForExtensionFile:extensionsFilename package:aPackageId directory:dir module:mod cache:true.
-            ].
-        ].
-        inStream isNil ifTrue:[
-            SourceCodeManagerError handle:[:ex |
-            ] do:[
-                inStream := mgr getMostRecentSourceStreamForFile:extensionsFilename inPackage:aPackageId.
-            ].
-        ].
-        inStream notNil ifTrue:[
-            Class withoutUpdatingChangeSetDo:[
-                inStream fileIn.
-            ].
-            inStream close.
-            VerboseLoading ifTrue:[
-                Transcript showCR:('loaded extensions for ',aPackageId,' from repository').
-            ].
-            ^ true
-        ]
+		]
+	    ].
+	    SourceCodeManagerError handle:[:ex |
+	    ] do:[
+		inStream := mgr streamForExtensionFile:extensionsFilename package:aPackageId directory:dir module:mod cache:true.
+	    ].
+	].
+	inStream isNil ifTrue:[
+	    SourceCodeManagerError handle:[:ex |
+	    ] do:[
+		inStream := mgr getMostRecentSourceStreamForFile:extensionsFilename inPackage:aPackageId.
+	    ].
+	].
+	inStream notNil ifTrue:[
+	    Class withoutUpdatingChangeSetDo:[
+		inStream fileIn.
+	    ].
+	    inStream close.
+	    VerboseLoading ifTrue:[
+		Transcript showCR:('loaded extensions for ',aPackageId,' from repository').
+	    ].
+	    ^ true
+	]
     ].
 
     packageDirName notNil ifTrue:[
-        ^ self loadExtensionsFromDirectory:packageDirName language: language
+	^ self loadExtensionsFromDirectory:packageDirName language: language
     ].
     ^ false
 
@@ -2244,13 +2244,13 @@
 
     f := packageDir / ('extensions.' , language sourceFileSuffix).
     f exists ifTrue:[
-        Class withoutUpdatingChangeSetDo:[
-            f fileIn.
-        ].
-        VerboseLoading ifTrue:[
-            Transcript showCR:('loaded extensions: ' , f pathName).
-        ].
-        ^ true
+	Class withoutUpdatingChangeSetDo:[
+	    f fileIn.
+	].
+	VerboseLoading ifTrue:[
+	    Transcript showCR:('loaded extensions: ' , f pathName).
+	].
+	^ true
     ].
     ^ false
 
@@ -2404,12 +2404,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!!
@@ -2423,36 +2423,36 @@
 
     "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 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).
@@ -2460,75 +2460,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.
@@ -2657,13 +2657,13 @@
     Smalltalk installAutoloadedClassesFrom:abbrevFile pathName.
 
     doLoadAsAutoloaded ifFalse:[
-        "/ force autoloading...
-        Smalltalk allClassesInPackage:aPackageId do:[:eachClass | eachClass autoload].
+	"/ force autoloading...
+	Smalltalk allClassesInPackage:aPackageId do:[:eachClass | eachClass autoload].
     ].
 
     self loadExtensionsFromDirectory:packageDir.
     VerboseLoading ifTrue:[
-        Transcript showCR:('loaded package: ' , aPackageId , ' from abbrev file: ' , abbrevFile pathName).
+	Transcript showCR:('loaded package: ' , aPackageId , ' from abbrev file: ' , abbrevFile pathName).
     ].
     ^ true
 
@@ -2687,27 +2687,27 @@
     "/ If that happens, we restart the set-building here
     "/
     [(classes := CachedClasses) isNil] whileTrue:[
-        CachedClasses := classes := IdentitySet new:NumberOfClassesHint.
-        self keysAndValuesDo:[:eachName :eachGlobal |
-            (eachGlobal notNil and:[eachGlobal isBehavior]) ifTrue:[
-                "/ sigh - would like to skip over aliases
-                "/ but this cannot be done simply by comparing
-                "/ the classes name against the store-key
-                "/ i.e. cannot do:
-                "/      anObject name == sym ifTrue:[
-                "/          classes add:anObject
-                "/      ]
-                "/ because that would lead to ignore all java
-                "/ classes, which are stored under a different
-                "/ key.
-
-                (eachGlobal name == eachName
-                 or:[eachGlobal isJavaClass]) ifTrue:[
-                    classes add:eachGlobal
-                ].
-            ]
-        ].
-        NumberOfClassesHint := classes size.
+	CachedClasses := classes := IdentitySet new:NumberOfClassesHint.
+	self keysAndValuesDo:[:eachName :eachGlobal |
+	    (eachGlobal notNil and:[eachGlobal isBehavior]) ifTrue:[
+		"/ sigh - would like to skip over aliases
+		"/ but this cannot be done simply by comparing
+		"/ the classes name against the store-key
+		"/ i.e. cannot do:
+		"/      anObject name == sym ifTrue:[
+		"/          classes add:anObject
+		"/      ]
+		"/ because that would lead to ignore all java
+		"/ classes, which are stored under a different
+		"/ key.
+
+		(eachGlobal name == eachName
+		 or:[eachGlobal isJavaClass]) ifTrue:[
+		    classes add:eachGlobal
+		].
+	    ]
+	].
+	NumberOfClassesHint := classes size.
     ].
     ^ classes
 
@@ -3452,18 +3452,18 @@
 
     startBlocks := self startBlocks.
     startBlocks notNil ifTrue:[
-        'Smalltalk [info]: execute startBlocks...' infoPrintCR.
-        startBlocks do:[:aBlock|
-            Error handle:[:ex |
-                InfoPrinting == true ifTrue:[
-                    'Smalltalk [warning]: error cought in startBlock: ' infoPrint.
-                    ex description infoPrintCR.
-                    ex infoPrintCR.
-                    ex pass.
-                ].
-            ] do: aBlock
-        ].
-        startBlocks removeAll.
+	'Smalltalk [info]: execute startBlocks...' infoPrintCR.
+	startBlocks do:[:aBlock|
+	    Error handle:[:ex |
+		InfoPrinting == true ifTrue:[
+		    'Smalltalk [warning]: error cought in startBlock: ' infoPrint.
+		    ex description infoPrintCR.
+		    ex infoPrintCR.
+		    ex pass.
+		].
+	    ] do: aBlock
+	].
+	startBlocks removeAll.
     ].
 
     "Created: / 07-01-2012 / 12:58:39 / cg"
@@ -3489,43 +3489,43 @@
     thisIsARestart := imageName notNil.
 
     graphicalMode ifTrue:[
-        Display isNil ifTrue:[
-            (StartupClass notNil
-            and:[ (StartupClass perform:#isHeadless ifNotUnderstood:false) ]) ifFalse:[
-                self openDisplay.
-            ].
-        ].
+	Display isNil ifTrue:[
+	    (StartupClass notNil
+	    and:[ (StartupClass perform:#isHeadless ifNotUnderstood:false) ]) ifFalse:[
+		self openDisplay.
+	    ].
+	].
     ].
 
     StandAlone ifFalse:[
-        "
-         enable the graphical debugger/inspector
-         (they could have been (re)defined as autoloaded in the patches file)
-        "
-        self initStandardTools.
+	"
+	 enable the graphical debugger/inspector
+	 (they could have been (re)defined as autoloaded in the patches file)
+	"
+	self initStandardTools.
     ].
 
     "
      if there is a display, start its event dispatcher
     "
     Display notNil ifTrue:[
-        Display deviceIOTimeoutErrorSignal handlerBlock:[:ex |
-            SaveEmergencyImage == true ifTrue:[
-                'Display [warning]: broken display connection - emergency save in ''crash.img''.' infoPrintCR.
-                ObjectMemory primSnapShotOn:'crash.img'.
-            ].
-            'Display [warning]: broken display connection - exit.' infoPrintCR.
-            self exit.
-        ].
-        Display startDispatch.
+	Display deviceIOTimeoutErrorSignal handlerBlock:[:ex |
+	    SaveEmergencyImage == true ifTrue:[
+		'Display [warning]: broken display connection - emergency save in ''crash.img''.' infoPrintCR.
+		ObjectMemory primSnapShotOn:'crash.img'.
+	    ].
+	    'Display [warning]: broken display connection - exit.' infoPrintCR.
+	    self exit.
+	].
+	Display startDispatch.
     ].
 
     idx := CommandLineArguments indexOf:'--browserWindow:'.
     IsPlugin := (idx ~~ 0).
     IsPlugin ifTrue:[
-        'Smalltalk [info]: startup browser window...' infoPrintCR.
-        self browserWindowStartup.
-        "/ not reached
+	'Smalltalk [info]: startup browser window...' infoPrintCR.
+	self browserWindowStartup.
+	"/ not reached
     ].
 
     Initializing := false.
@@ -3536,49 +3536,49 @@
     "/ Therefore, it is now done by an extra user-process.
 
     process := [
-        'Smalltalk [info]: startup process 1 active.' infoPrintCR.
-        StartBlocks notNil ifTrue:[
-            self executeStartBlocks.
-            StartBlocks := nil.
-        ].
-        ImageStartBlocks notNil ifTrue:[
-            'Smalltalk [info]: execute imageStartBlocks...' infoPrintCR.
-            ImageStartBlocks do:[:aBlock|
-                aBlock value
-            ].
-        ].
-        StandAlone ifFalse:[
-            (SilentLoading == true) ifFalse:[   "i.e. undefined counts as false"
-                thisIsARestart ifTrue:[
-                    Transcript cr.
-                    Transcript showCR:('Smalltalk restarted from:'
-                                        , imageName
-                                        , ' (saved '
-                                        , ObjectMemory imageSaveTime printString
-                                        , ')' ).
-                ] ifFalse:[
-                    Transcript showCR:(self hello).
-                    Transcript showCR:(self copyrightString).
-                ].
-                Transcript cr.
-            ].
-
-            DemoMode==true ifTrue:[
-                Transcript showCR:'*** Restricted use:                              ***'.
-                Transcript showCR:'*** This program may be used for education only. ***'.
-                Transcript showCR:'*** Please read the files COPYRIGHT and LICENSE  ***'.
-                Transcript showCR:'*** for more details.                            ***'.
-                Transcript cr.
-            ].
-        ].
-
-        thisIsARestart ifTrue:[
-            "/
-            "/ the final late notification - users can now assume that
-            "/ views, forms etc. have been recreated.
-
-            ObjectMemory changed:#returnFromSnapshot.
-        ]
+	'Smalltalk [info]: startup process 1 active.' infoPrintCR.
+	StartBlocks notNil ifTrue:[
+	    self executeStartBlocks.
+	    StartBlocks := nil.
+	].
+	ImageStartBlocks notNil ifTrue:[
+	    'Smalltalk [info]: execute imageStartBlocks...' infoPrintCR.
+	    ImageStartBlocks do:[:aBlock|
+		aBlock value
+	    ].
+	].
+	StandAlone ifFalse:[
+	    (SilentLoading == true) ifFalse:[   "i.e. undefined counts as false"
+		thisIsARestart ifTrue:[
+		    Transcript cr.
+		    Transcript showCR:('Smalltalk restarted from:'
+					, imageName
+					, ' (saved '
+					, ObjectMemory imageSaveTime printString
+					, ')' ).
+		] ifFalse:[
+		    Transcript showCR:(self hello).
+		    Transcript showCR:(self copyrightString).
+		].
+		Transcript cr.
+	    ].
+
+	    DemoMode==true ifTrue:[
+		Transcript showCR:'*** Restricted use:                              ***'.
+		Transcript showCR:'*** This program may be used for education only. ***'.
+		Transcript showCR:'*** Please read the files COPYRIGHT and LICENSE  ***'.
+		Transcript showCR:'*** for more details.                            ***'.
+		Transcript cr.
+	    ].
+	].
+
+	thisIsARestart ifTrue:[
+	    "/
+	    "/ the final late notification - users can now assume that
+	    "/ views, forms etc. have been recreated.
+
+	    ObjectMemory changed:#returnFromSnapshot.
+	]
 
     ] newProcess.
 
@@ -3595,63 +3595,63 @@
     "/ message.
 
     (StartupClass notNil and:[StartupSelector notNil]) ifTrue:[
-        "
-         allow more customization by reading an image specific rc-file
-        "
-        thisIsARestart ifTrue:[
-            (imageName asFilename hasSuffix:'img') ifTrue:[
-                imageName := imageName copyWithoutLast:4
-            ].
-            self fileIn:(imageName , '.rc')
-        ].
+	"
+	 allow more customization by reading an image specific rc-file
+	"
+	thisIsARestart ifTrue:[
+	    (imageName asFilename hasSuffix:'img') ifTrue:[
+		imageName := imageName copyWithoutLast:4
+	    ].
+	    self fileIn:(imageName , '.rc')
+	].
 
 "/        Display notNil ifTrue:[
 "/            Display exitOnLastClose:true.
 "/        ].
 "/        Processor exitWhenNoMoreUserProcesses:true.
 
-        process := [
-            'Smalltalk [info]: startup process 2 active.' infoPrintCR.
-            StandAlone ifTrue:[
-                AbortOperationRequest handle:[:ex |
-                    'Smalltalk [info]: aborted - exit.' infoPrintCR.
-                    OperatingSystem exit:1
-                ] do:[
-                    ('Smalltalk [info]: call ',StartupSelector,' of ',StartupClass name,' (1)') infoPrintCR.
-                    StartupClass perform:StartupSelector withArguments:StartupArguments.
-                ]
-            ] ifFalse:[
-                ('Smalltalk [info]: call ',StartupSelector,' of ',StartupClass name,' (2)') infoPrintCR.
-                StartupClass perform:StartupSelector withArguments:StartupArguments.
-            ].
-
-            "/
-            "/ non-GUI apps exit after the startup;
-            "/ assume that GUI apps have created & opened some view ...
-            "/
-            Display isNil ifTrue:[
-                'Smalltalk [info]: no Display - exit.' infoPrintCR.
-                Smalltalk exit.
-            ].
-            "/
-            "/ GUI apps exit after the last user process has finished
-            "/
-            Display exitOnLastClose:true.
-            Processor exitWhenNoMoreUserProcesses:true.
-        ] newProcess.
-        process priority:(Processor userSchedulingPriority).
-        process name:'main'.
-        process beGroupLeader.
-        process resume.
-        process := nil.    "do not refer to process"
+	process := [
+	    'Smalltalk [info]: startup process 2 active.' infoPrintCR.
+	    StandAlone ifTrue:[
+		AbortOperationRequest handle:[:ex |
+		    'Smalltalk [info]: aborted - exit.' infoPrintCR.
+		    OperatingSystem exit:1
+		] do:[
+		    ('Smalltalk [info]: call ',StartupSelector,' of ',StartupClass name,' (1)') infoPrintCR.
+		    StartupClass perform:StartupSelector withArguments:StartupArguments.
+		]
+	    ] ifFalse:[
+		('Smalltalk [info]: call ',StartupSelector,' of ',StartupClass name,' (2)') infoPrintCR.
+		StartupClass perform:StartupSelector withArguments:StartupArguments.
+	    ].
+
+	    "/
+	    "/ non-GUI apps exit after the startup;
+	    "/ assume that GUI apps have created & opened some view ...
+	    "/
+	    Display isNil ifTrue:[
+		'Smalltalk [info]: no Display - exit.' infoPrintCR.
+		Smalltalk exit.
+	    ].
+	    "/
+	    "/ GUI apps exit after the last user process has finished
+	    "/
+	    Display exitOnLastClose:true.
+	    Processor exitWhenNoMoreUserProcesses:true.
+	] newProcess.
+	process priority:(Processor userSchedulingPriority).
+	process name:'main'.
+	process beGroupLeader.
+	process resume.
+	process := nil.    "do not refer to process"
     ].
 
     StandAlone ifTrue:[
-        Display notNil ifTrue:[
-            FlyByHelp notNil ifTrue:[
-                FlyByHelp start
-            ].
-        ].
+	Display notNil ifTrue:[
+	    FlyByHelp notNil ifTrue:[
+		FlyByHelp start
+	    ].
+	].
     ].
 
     "
@@ -3662,13 +3662,13 @@
      or:[process notNil
      or:[HeadlessOperation
      or:[StandAlone]]]) ifTrue:[
-        Processor dispatchLoop.
-        "done - the last process finished"
-        'Smalltalk [info]: last process finished - exit.' infoPrintCR.
+	Processor dispatchLoop.
+	"done - the last process finished"
+	'Smalltalk [info]: last process finished - exit.' infoPrintCR.
     ] ifFalse:[
-        StandAlone ifFalse:[
-            self readEvalPrint
-        ]
+	StandAlone ifFalse:[
+	    self readEvalPrint
+	]
     ].
 
     self exit
@@ -3730,15 +3730,15 @@
      #earlySystemInstallation is sent for ST80 compatibility
 
      #earlyRestart is send first, nothing has been setup yet.
-                   (should be used to flush all device dependent entries)
+		   (should be used to flush all device dependent entries)
 
      #restarted is send right after.
-                   (should be used to recreate external resources (fds, bitmaps etc)
+		   (should be used to recreate external resources (fds, bitmaps etc)
 
      #returnFromSnapshot is sent last
-                   (should be used to restart processes, reOpen Streams which cannot
-                    be automatically be reopened (i.e. Sockets, Pipes) and so on.
-                   (Notice that positionable fileStreams are already reopened and repositioned)
+		   (should be used to restart processes, reOpen Streams which cannot
+		    be automatically be reopened (i.e. Sockets, Pipes) and so on.
+		   (Notice that positionable fileStreams are already reopened and repositioned)
      "
 
     |deb insp transcript idx|
@@ -3764,12 +3764,12 @@
 
     idx := CommandLineArguments indexOf:'-q'.
     idx == 0 ifTrue:[
-        idx := CommandLineArguments indexOf:'--silent'.
+	idx := CommandLineArguments indexOf:'--silent'.
     ].
     idx ~~ 0 ifTrue:[
-        Object infoPrinting:false.
-        ObjectMemory infoPrinting:false.
-        CommandLineArguments removeAtIndex:idx.
+	Object infoPrinting:false.
+	ObjectMemory infoPrinting:false.
+	CommandLineArguments removeAtIndex:idx.
     ].
 
     "/
@@ -3804,7 +3804,7 @@
     insp := Inspector.
     deb := Debugger.
     deb notNil ifTrue:[
-        deb reinitialize
+	deb reinitialize
     ].
     Inspector := MiniInspector.
     Debugger := MiniDebugger.
@@ -3817,7 +3817,7 @@
     "/ ObjectFileLoader; therefore, must reload before doing any notifications.
 
     ObjectFileLoader notNil ifTrue:[
-        ObjectFileLoader reloadAllRememberedObjectFiles.
+	ObjectFileLoader reloadAllRememberedObjectFiles.
     ].
 
     "/
@@ -3826,9 +3826,9 @@
     "/ a display during early startup.
 
     Screen notNil ifTrue:[
-        Screen allScreens do:[:aDisplay |
-            aDisplay invalidateConnection
-        ].
+	Screen allScreens do:[:aDisplay |
+	    aDisplay invalidateConnection
+	].
     ].
 
     ObjectMemory changed:#earlySystemInstallation.
@@ -3844,7 +3844,7 @@
     "/ (mostly view/GC/color & font stuff)
 
     ObjectMemory
-        changed:#earlyRestart; changed:#restarted.
+	changed:#earlyRestart; changed:#restarted.
 
     "/
     "/ start catching SIGINT and SIGQUIT
@@ -3858,80 +3858,80 @@
 
     idx := CommandLineArguments indexOf:'--faststart'.
     idx == 0 ifTrue:[
-        idx := CommandLineArguments indexOf:'--fastStart'.
+	idx := CommandLineArguments indexOf:'--fastStart'.
     ].
     idx ~~ 0 ifTrue:[
-        CommandLineArguments removeAtIndex:idx.
+	CommandLineArguments removeAtIndex:idx.
     ] ifFalse:[
-        CallbackSignal := QuerySignal new.
-        [
-            Class withoutUpdatingChangesDo:[
-                (self fileIn:(self commandName , '_r.rc')) ifFalse:[
-                    "no _r.rc file where executable is; try default smalltalk_r.rc"
-                    self fileIn:'smalltalk_r.rc'
-                ].
-            ]
-        ] on:CallbackSignal do:[:ex|
-            "/ now, display and view-stuff works;
-            "/ back to the previous debugging interface
-
-            Inspector := insp.
-            Debugger := deb.
-
-            "/ reinstall Transcript, if not changed during restart.
-            "/ if there was no Transcript, go to stderr
-
-            (transcript notNil and:[Transcript == Stderr]) ifTrue:[
-                Transcript := transcript.
-            ].
-            Initializing := false.
-            ex proceed.
-        ].
-        CallbackSignal := nil.
+	CallbackSignal := QuerySignal new.
+	[
+	    Class withoutUpdatingChangesDo:[
+		(self fileIn:(self commandName , '_r.rc')) ifFalse:[
+		    "no _r.rc file where executable is; try default smalltalk_r.rc"
+		    self fileIn:'smalltalk_r.rc'
+		].
+	    ]
+	] on:CallbackSignal do:[:ex|
+	    "/ now, display and view-stuff works;
+	    "/ back to the previous debugging interface
+
+	    Inspector := insp.
+	    Debugger := deb.
+
+	    "/ reinstall Transcript, if not changed during restart.
+	    "/ if there was no Transcript, go to stderr
+
+	    (transcript notNil and:[Transcript == Stderr]) ifTrue:[
+		Transcript := transcript.
+	    ].
+	    Initializing := false.
+	    ex proceed.
+	].
+	CallbackSignal := nil.
     ].
 
     "/ reinitialization (restart) of Display is normally performed
     "/ in the restart script. If this has not been run for some reason,
     "/ do in now.
     Initializing ifTrue:[
-        Display notNil ifTrue:[
-            [
-                Display reinitializeFor:Screen defaultDisplayName.
-            ] on:Screen deviceOpenErrorSignal do:[
-                'Smalltalk [error]: Cannot restart connection to: ' errorPrint.
-                Screen defaultDisplayName errorPrintCR.
-                OperatingSystem exit:1.
-            ].
-        ].
-        "/ now, display and view-stuff works;
-        "/ back to the previous debugging interface
-
-        Inspector := insp.
-        Debugger := deb.
-
-        "/ reinstall Transcript, if not changed during restart.
-        "/ if there was no Transcript, go to stderr
-
-        (transcript notNil and:[Transcript == Stderr]) ifTrue:[
-            Transcript := transcript.
-        ].
-        Initializing := false.
+	Display notNil ifTrue:[
+	    [
+		Display reinitializeFor:Screen defaultDisplayName.
+	    ] on:Screen deviceOpenErrorSignal do:[
+		'Smalltalk [error]: Cannot restart connection to: ' errorPrint.
+		Screen defaultDisplayName errorPrintCR.
+		OperatingSystem exit:1.
+	    ].
+	].
+	"/ now, display and view-stuff works;
+	"/ back to the previous debugging interface
+
+	Inspector := insp.
+	Debugger := deb.
+
+	"/ reinstall Transcript, if not changed during restart.
+	"/ if there was no Transcript, go to stderr
+
+	(transcript notNil and:[Transcript == Stderr]) ifTrue:[
+	    Transcript := transcript.
+	].
+	Initializing := false.
     ].
     Screen notNil ifTrue:[
-        "clean up leftover screens (and views) that haven't been reopened.
-         Operate on a copy, since brokenConnection removes us from AllScreens"
-        Screen allScreens copy do:[:eachDisplay |
-            eachDisplay isOpen ifFalse:[
-                'Smalltalk [info]: cannot reopen secondary display: ' errorPrint.
-                eachDisplay errorPrintCR.
-                eachDisplay cleanupAfterDispatch; brokenConnection.
-            ]
-        ].
+	"clean up leftover screens (and views) that haven't been reopened.
+	 Operate on a copy, since brokenConnection removes us from AllScreens"
+	Screen allScreens copy do:[:eachDisplay |
+	    eachDisplay isOpen ifFalse:[
+		'Smalltalk [info]: cannot reopen secondary display: ' errorPrint.
+		eachDisplay errorPrintCR.
+		eachDisplay cleanupAfterDispatch; brokenConnection.
+	    ]
+	].
     ].
 
     deb := insp := transcript := nil.   "avoid dangling refs"
     (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
     ].
     self mainStartup:true
 
@@ -4045,6 +4045,8 @@
 		    removeAtIndex:idx+1; removeAtIndex:idx.
 
 		self startSchedulerAndBackgroundCollector.
+		Initializing := false.
+
 		process := [
 		    arg = '-' ifTrue:[
 			self fileInStream:Stdin
@@ -4080,6 +4082,8 @@
 		    removeAtIndex:idx+1; removeAtIndex:idx.
 
 		self startSchedulerAndBackgroundCollector.
+		Initializing := false.
+
 		self
 		    fileInStream:arg readStream
 		    lazy:nil
@@ -4105,6 +4109,8 @@
 
 	commandFile notNil ifTrue:[
 	    self startSchedulerAndBackgroundCollector.
+	    Initializing := false.
+
 	    (self secureFileIn:commandFile) ifFalse:[
 		('Smalltalk [error]: startup file "', commandFile, '" not found.') errorPrintCR.
 		OperatingSystem exit:1.
@@ -4189,15 +4195,15 @@
     |p|
 
     p :=
-        [
-            self executeStartBlocks.
-        ] newProcess.
+	[
+	    self executeStartBlocks.
+	] newProcess.
 
     p
-        priority:(Processor userSchedulingPriority);
-        name:'start block handler';
-        beGroupLeader;
-        resume.
+	priority:(Processor userSchedulingPriority);
+	name:'start block handler';
+	beGroupLeader;
+	resume.
 
     "Modified: / 07-01-2012 / 12:59:01 / cg"
 ! !
@@ -4869,77 +4875,77 @@
     |s2 l abbrevFileName info clsName cls abbrev package cat numClassInstVars words w|
 
     anAbbrevFileStream isFileStream ifTrue:[
-        abbrevFileName := anAbbrevFileStream pathName.
-        info := 'declared from: ', abbrevFileName.
+	abbrevFileName := anAbbrevFileStream pathName.
+	info := 'declared from: ', abbrevFileName.
     ].
 
     KnownPackages isNil ifTrue:[
-        KnownPackages := Set new.
+	KnownPackages := Set new.
     ].
 
     "/ yes, create any required nameSpace, without asking user.
     Class createNameSpaceQuerySignal answer:true do:[
 
-        [anAbbrevFileStream atEnd] whileFalse:[
-            l := anAbbrevFileStream nextLine withoutSeparators.
-            "Skip empty lines and comments"
-            (l notEmpty and:[l first ~= $#]) ifTrue:[
-                "/ must do it manually, caring for quoted strings.
+	[anAbbrevFileStream atEnd] whileFalse:[
+	    l := anAbbrevFileStream nextLine withoutSeparators.
+	    "Skip empty lines and comments"
+	    (l notEmpty and:[l first ~= $#]) ifTrue:[
+		"/ must do it manually, caring for quoted strings.
 "/                words := line asCollectionOfWords.
 
-                words := OrderedCollection new.
-                s2 := l readStream.
-                [s2 atEnd] whileFalse:[
-                    s2 skipSeparators.
-                    s2 peek == $' ifTrue:[
-                        s2 next.
-                        w := s2 upTo:$'.
-                        s2 skipSeparators.
-                    ] ifFalse:[
-                        w := s2 upToSeparator
-                    ].
-                    words add:w
-                ].
-                words size < 3 ifTrue:[
-                    'Smalltalk [warning]: bad abbrev entry' errorPrint.
-                    anAbbrevFileStream isFileStream ifTrue:[
-                        ' (in ''' errorPrint.
-                        anAbbrevFileStream pathName errorPrint.
-                        ''')' errorPrint
-                    ].
-                    ': ' errorPrint. l errorPrintCR
-                ] ifFalse:[
-                    clsName := (words at:1) asSymbol.
-                    abbrev := (words at:2).
-                    package := (words at:3) asSymbol.
-                    cat := words at:4 ifAbsent:nil.
-                    numClassInstVars := words at:5 ifAbsent:'0'.
-                    numClassInstVars := Integer readFrom:numClassInstVars onError:[0].
+		words := OrderedCollection new.
+		s2 := l readStream.
+		[s2 atEnd] whileFalse:[
+		    s2 skipSeparators.
+		    s2 peek == $' ifTrue:[
+			s2 next.
+			w := s2 upTo:$'.
+			s2 skipSeparators.
+		    ] ifFalse:[
+			w := s2 upToSeparator
+		    ].
+		    words add:w
+		].
+		words size < 3 ifTrue:[
+		    'Smalltalk [warning]: bad abbrev entry' errorPrint.
+		    anAbbrevFileStream isFileStream ifTrue:[
+			' (in ''' errorPrint.
+			anAbbrevFileStream pathName errorPrint.
+			''')' errorPrint
+		    ].
+		    ': ' errorPrint. l errorPrintCR
+		] ifFalse:[
+		    clsName := (words at:1) asSymbol.
+		    abbrev := (words at:2).
+		    package := (words at:3) asSymbol.
+		    cat := words at:4 ifAbsent:nil.
+		    numClassInstVars := words at:5 ifAbsent:'0'.
+		    numClassInstVars := Integer readFrom:numClassInstVars onError:[0].
 
 "/                KnownPackages add:package.
 
-                    (cat size == 0) ifTrue:[
-                        cat := 'autoloaded'
-                    ].
-
-                    "/ on the fly, update the abbreviations
-                    self setFilename:abbrev forClass:clsName package:package.
-
-                    "/ '  autoloaded: ' print. clsName print. ' in ' print. cat printCR.
-
-                    cls := self
-                        installAutoloadedClassNamed:clsName
-                        category:cat
-                        package:package
-                        revision:nil
-                        numClassInstVars:numClassInstVars.
+		    (cat size == 0) ifTrue:[
+			cat := 'autoloaded'
+		    ].
+
+		    "/ on the fly, update the abbreviations
+		    self setFilename:abbrev forClass:clsName package:package.
+
+		    "/ '  autoloaded: ' print. clsName print. ' in ' print. cat printCR.
+
+		    cls := self
+			installAutoloadedClassNamed:clsName
+			category:cat
+			package:package
+			revision:nil
+			numClassInstVars:numClassInstVars.
 
 "/                    info notNil ifTrue:[
 "/                        cls setComment:info.
 "/                    ].
-                ]
-            ]
-        ]
+		]
+	    ]
+	]
     ]
 !
 
@@ -5028,12 +5034,12 @@
     dirsConsulted := Set new.
 
     self
-        recursiveInstallAutoloadedClassesFrom:aTopDirectory
-        rememberIn:dirsConsulted
-        maxLevels:15
-        noAutoload:false
-        packageTop:nil
-        showSplashInLevels:-1.
+	recursiveInstallAutoloadedClassesFrom:aTopDirectory
+	rememberIn:dirsConsulted
+	maxLevels:15
+	noAutoload:false
+	packageTop:nil
+	showSplashInLevels:-1.
 
 
     "
@@ -5075,48 +5081,48 @@
 
     maxLevels == 0 ifTrue:[
 "/        'Smalltalk [warning]: max directory nesting reached.' infoPrintCR.
-        ^ self
+	^ self
     ].
 
     dir := aDirectory asFilename.
     dirName := dir pathName.
 
     (dirsConsulted includes:dirName) ifTrue:[
-        ^ self
+	^ self
     ].
     dirsConsulted add:dirName.
 
     (dir / 'NOPACKAGES') exists ifTrue:[
-        ^ self.
+	^ self.
     ].
     (dir / 'NOSUBAUTOLOAD') exists ifTrue:[
-        ^ self.
+	^ self.
     ].
 
     noAutoloadHere := noAutoloadIn.
     noAutoloadHere ifFalse:[
-        (dir / 'NOAUTOLOAD') exists ifTrue:[
-            noAutoloadHere := true.
-        ].
+	(dir / 'NOAUTOLOAD') exists ifTrue:[
+	    noAutoloadHere := true.
+	].
     ] ifTrue:[
-        (dir / 'AUTOLOAD') exists ifTrue:[
-            noAutoloadHere := false.
-        ].
+	(dir / 'AUTOLOAD') exists ifTrue:[
+	    noAutoloadHere := false.
+	].
     ].
 
     ((dir / 'loadAll') exists or:[(dir / 'abbrev.stc') exists]) ifTrue:[
-        packageTopPath notNil ifTrue:[
-            KnownPackages isNil ifTrue:[
-                KnownPackages := Set new.
-            ].
-            pkgName := dirName copyFrom:(packageTopPath asFilename pathName) size + 1 + 1.
-            KnownPackages add:pkgName
-        ].
+	packageTopPath notNil ifTrue:[
+	    KnownPackages isNil ifTrue:[
+		KnownPackages := Set new.
+	    ].
+	    pkgName := dirName copyFrom:(packageTopPath asFilename pathName) size + 1 + 1.
+	    KnownPackages add:pkgName
+	].
     ].
 
     showSplashInLevels >= 0 ifTrue:[
-        self showSplashMessage:('Smalltalk [info]: installing autoloaded classes found under "%1"...'
-                                bindWith:(dirName contractAtBeginningTo:35)).
+	self showSplashMessage:('Smalltalk [info]: installing autoloaded classes found under "%1"...'
+				bindWith:(dirName contractAtBeginningTo:35)).
     ].
 
     "/
@@ -5124,57 +5130,57 @@
     "/ below; however, still traverse the directories to find packages ...
     "/
     noAutoloadHere ifFalse:[
-        [
-            self installAutoloadedClassesFromAbbrevFile:(dir / 'abbrev.stc').
-        ] on:FileStream openErrorSignal do:[:ex| "ignore this file"].
+	[
+	    self installAutoloadedClassesFromAbbrevFile:(dir / 'abbrev.stc').
+	] on:FileStream openErrorSignal do:[:ex| "ignore this file"].
     ].
 
     [
-        directoryContents := dir directoryContents asSet.   "asSet to speed up remove"
+	directoryContents := dir directoryContents asSet.   "asSet to speed up remove"
     ] on:FileStream openErrorSignal do:[:ex|
-        "non-accessable directory: we are done"
-        ^ self
+	"non-accessable directory: we are done"
+	^ self
     ].
 
     directoryContents removeAllFoundIn:#(
-                            'objbc'
-                            'objvc'
-                            'doc'
-                            'CVS'
-                            'bitmaps'
-                            'resources'
-                            'source'
-                            'not_delivered'
-                            'not_ported'
-                        ).
+			    'objbc'
+			    'objvc'
+			    'doc'
+			    'CVS'
+			    'bitmaps'
+			    'resources'
+			    'source'
+			    'not_delivered'
+			    'not_ported'
+			).
     dir baseName = 'stx' ifTrue:[
-        directoryContents removeAllFoundIn:#(
-                            'configurations'
-                            'include'
-                            'rules'
-                            'stc'
-                            'support'
-                        ).
+	directoryContents removeAllFoundIn:#(
+			    'configurations'
+			    'include'
+			    'rules'
+			    'stc'
+			    'support'
+			).
     ].
 
     directoryContents do:[:eachFilenameString |
-        |f|
-
-        f := dir / eachFilenameString.
-        f isDirectory ifTrue:[
-             self
-                recursiveInstallAutoloadedClassesFrom:f
-                rememberIn:dirsConsulted
-                maxLevels:maxLevels-1
-                noAutoload:noAutoloadHere
-                packageTop:packageTopPath
-                showSplashInLevels:showSplashInLevels - 1.
-        ]
+	|f|
+
+	f := dir / eachFilenameString.
+	f isDirectory ifTrue:[
+	     self
+		recursiveInstallAutoloadedClassesFrom:f
+		rememberIn:dirsConsulted
+		maxLevels:maxLevels-1
+		noAutoload:noAutoloadHere
+		packageTop:packageTopPath
+		showSplashInLevels:showSplashInLevels - 1.
+	]
     ].
 
     showSplashInLevels >= 0 ifTrue:[
-        self showSplashMessage:('Smalltalk [info]: installing autoloaded classes from "%1"...'
-                                bindWith:(dirName contractAtBeginningTo:35)).
+	self showSplashMessage:('Smalltalk [info]: installing autoloaded classes from "%1"...'
+				bindWith:(dirName contractAtBeginningTo:35)).
     ].
 
     "
@@ -5452,9 +5458,9 @@
     (path := self getBinaryFileName:aFileName) isNil ifTrue:[^ false].
     ok := (ObjectFileLoader loadClass:aClassName fromObjectFile:path) notNil.
     ok ifTrue:[
-        VerboseLoading ifTrue:[
-            Transcript show:'  loaded ' , aClassName , ' from ' ; showCR:aFileName.
-        ]
+	VerboseLoading ifTrue:[
+	    Transcript show:'  loaded ' , aClassName , ' from ' ; showCR:aFileName.
+	]
     ].
     ^ ok
 
@@ -6205,66 +6211,66 @@
 "/  prerequisites in makefiles. But if you renamed such a stc-compiled class,
 "/  the filename remains the same, but SVN __ALWAYS__ keep container name
 "/  and class name in sync. Therefore build files gets messed up. Indeed, this
-"/  should be fixed in code that files-out the package and generates build files. 
+"/  should be fixed in code that files-out the package and generates build files.
 "/  Certainly a hack, but do not remove this until fixed elsewhere
 
     compatQuery := Smalltalk classNamed: 'SVN::CompatModeQuery'.
     (compatQuery notNil
       and:[compatQuery isLoaded
-        and:[compatQuery query not]]) ifTrue:[
-            nm := aClassOrClassName isBehavior
-                ifTrue:[aClassOrClassName name]
-                ifFalse:[aClassOrClassName].
-            nm := nm copyReplaceAll:$: with:$_.
-            ^nm
+	and:[compatQuery query not]]) ifTrue:[
+	    nm := aClassOrClassName isBehavior
+		ifTrue:[aClassOrClassName name]
+		ifFalse:[aClassOrClassName].
+	    nm := nm copyReplaceAll:$: with:$_.
+	    ^nm
     ].
 
 "/  Same for another query for new libscm...
     compatQuery := Smalltalk classNamed: 'SCMCompatModeQuery'.
     (compatQuery notNil
       and:[compatQuery isLoaded
-        and:[compatQuery query not]]) ifTrue:[
-            nm := aClassOrClassName isBehavior
-                ifTrue:[aClassOrClassName name]
-                ifFalse:[aClassOrClassName].
-            nm := nm copyReplaceAll:$: with:$_.
-            ^nm
+	and:[compatQuery query not]]) ifTrue:[
+	    nm := aClassOrClassName isBehavior
+		ifTrue:[aClassOrClassName name]
+		ifFalse:[aClassOrClassName].
+	    nm := nm copyReplaceAll:$: with:$_.
+	    ^nm
     ].
 
     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:$_
@@ -7701,7 +7707,13 @@
      ST/X revision Naming is:
 	<major>.<minor>.<revision>.<release>"
 
-    ^ 1
+    |releaseNumber|
+
+    releaseNumber := Smalltalk versionBuildNumber.
+    releaseNumber isEmpty ifTrue:[
+	^ 0.
+    ].
+    ^ releaseNumber
 
     "
      Smalltalk releaseNr
@@ -7768,26 +7780,22 @@
 
     "return the executables build number - that's the jenkins build #.
      Empty if not built by jenkins"
-"
+
 %{  /* NOCONTEXT */
     extern char *__getBuildNumberString();
 
     RETURN (__MKSTRING(__getBuildNumberString() COMMA_SND) );
 %}.
-"
     ^ ''
 
     "
      Smalltalk versionBuildNumber
     "
-
-    "Created: / 26-11-2012 / 13:43:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 versionDate
-    "{ Pragma: +optSpace }"
-
-    "return the executables build date - thats the date when the smalltalk
+
+    "return the executables build date - that's the date when the smalltalk
      executable was built"
 
 %{  /* NOCONTEXT */
@@ -7812,7 +7820,8 @@
        self minorVersionNr printString ,
        '.',
        self revisionNr printString,
-       'b')
+       'b.',
+       self releaseNr printString)
 
 
     "
@@ -7837,13 +7846,13 @@
 !Smalltalk class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Smalltalk.st 10872 2012-11-27 08:58:37Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1000 2012/11/23 17:44:05 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.997 2012/10/29 11:43:52 cg Exp §'
+    ^ 'Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1000 2012/11/23 17:44:05 stefan Exp '
 !
 
 version_SVN
-    ^ '$Id:: Smalltalk.st 10872 2012-11-27 08:58:37Z vranyj1                                                                        $'
+    ^ '$Id:: Smalltalk.st 10876 2012-11-30 17:19:23Z vranyj1                                                                        $'
 ! !
--- a/TimeoutNotification.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/TimeoutNotification.st	Fri Nov 30 17:19:23 2012 +0000
@@ -15,7 +15,7 @@
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
-	category:'Kernel-Exceptions'
+	category:'Kernel-Exceptions-Notifications'
 !
 
 !TimeoutNotification class methodsFor:'documentation'!
@@ -43,9 +43,9 @@
 !TimeoutNotification class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/TimeoutNotification.st,v 1.1 2010/08/20 10:16:29 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/TimeoutNotification.st,v 1.2 2012/11/23 12:13:33 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: TimeoutNotification.st 10700 2011-09-29 15:44:37Z vranyj1 $'
+    ^ '$Id: TimeoutNotification.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
--- a/UserPreferences.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/UserPreferences.st	Fri Nov 30 17:19:23 2012 +0000
@@ -1919,8 +1919,6 @@
 !
 
 showAcceptCancelBarInBrowser
-    "experimental."
-
     ^ self at:#showAcceptCancelBarInBrowser ifAbsent:true
 
     "
@@ -4142,11 +4140,11 @@
 !UserPreferences class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.316 2012/10/22 17:24:42 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.319 2012/11/01 14:22:04 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.316 2012/10/22 17:24:42 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.319 2012/11/01 14:22:04 cg Exp §'
 !
 
 version_SVN
--- a/WeakArray.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/WeakArray.st	Fri Nov 30 17:19:23 2012 +0000
@@ -361,11 +361,7 @@
     "a helper for deepCopy; only indices for which this method returns
      false are copied in a deep copy."
 
-    index == 1 ifTrue:[
-	^ true "/ skip dependents
-    ].
-    ^ false
-
+    ^ index == 1    "/ skip dependents
 ! !
 
 !WeakArray methodsFor:'dependents access'!
@@ -1020,15 +1016,15 @@
 !WeakArray class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.67 2012/03/26 17:02:56 cg 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.67 2012/03/26 17:02:56 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.68 2012/11/24 12:55:25 stefan Exp §'
 !
 
 version_SVN
-    ^ '$Id: WeakArray.st 10804 2012-04-13 13:18:13Z vranyj1 $'
+    ^ '$Id: WeakArray.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 ! !
 
 WeakArray initialize!
--- a/Win32OperatingSystem.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/Win32OperatingSystem.st	Fri Nov 30 17:19:23 2012 +0000
@@ -814,6 +814,7 @@
     "Modified: 7.1.1997 / 19:36:11 / stefan"
 ! !
 
+
 !Win32OperatingSystem class methodsFor:'OS signal constants'!
 
 sigABRT
@@ -3962,14 +3963,6 @@
     ^ self primitiveFailed.
 !
 
-closeHandle: handle
-    "low level handle close"
-
-    <apicall: ulongReturn "CloseHandle" ( handle ) module: "kernel32.dll" >
-
-    "Modified (comment): / 12-08-2011 / 16:37:35 / cg"
-!
-
 createDirectory:aPathName
     "create a new directory with name 'aPathName', which may be an absolute
      path, or relative to the current directory.
@@ -6905,26 +6898,31 @@
 !
 
 duplicateHandle:aHandle to:targetProcessHandle
-    |hMe spaceForTargetHandle rslt|
-
-    spaceForTargetHandle := ExternalLong new.
+    |hMe spaceForTargetHandle rslt addr|
+
+    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:[
-	self primitiveFailed.
-	^ nil
-    ].
-    ^ ExternalAddress newAddress:(spaceForTargetHandle value).
+        spaceForTargetHandle free.
+        self primitiveFailed.
+        ^ nil
+    ].
+
+    addr := spaceForTargetHandle value.
+    spaceForTargetHandle free.
+    ^ ExternalAddress newAddress:addr.
 
     "Created: / 18-09-2007 / 16:34:25 / cg"
+    "Modified: / 21-11-2012 / 12:14:06 / anwild"
 !
 
 getAllProcesses
@@ -7120,24 +7118,6 @@
     "
 !
 
-multiByteToWideCharCp: cp flags: flags lpstr: lpstr cchstr: cchstr lpwstr: lpwstr cchwstr: cchwstr
-    "Convert the multi-byte string encoding in <lpstr> to a Unicode encoding in <lpwstr>."
-
-    " int MultiByteToWideChar(
-	UINT  CodePage,    // code page
-	DWORD  dwFlags,    // character-type options
-	LPCSTR  lpMultiByteStr,    // address of string to map
-	int  cchMultiByte,    // number of characters in string
-	LPWSTR  lpWideCharStr,    // address of wide-character buffer
-	int  cchWideChar     // size of buffer
-	);"
-
-    <apicall: ulongReturn "MultiByteToWideChar" ( uint32 uint32 structIn int32 structOut int32) module: "kernel32.dll" >
-    ^self primitiveFailed
-
-    "Modified (comment): / 12-08-2011 / 16:37:06 / cg"
-!
-
 playSound:fileName
     self playSound:fileName mode:1
 
@@ -7219,34 +7199,6 @@
     "Created: / 18-12-2006 / 13:01:41 / User"
 !
 
-wideCharToMultiByteCp: codePage
-    flags: dwFlags
-    lpwstr: lpWideCharStr
-    cchwstr: cchwstr
-    lpstr: lpstr
-    cchlpstr: cchlpstr
-    default: default
-    defaultUsed: defaultUsed
-
-    "Convert the Unicode encoding in <lpWideCharStr> to a multi-byte string encoding in <lpstr>."
-
-    "int WideCharToMultiByte(
-	UINT  CodePage,    // code page
-	DWORD  dwFlags,    // performance and mapping flags
-	LPCWSTR  lpWideCharStr,    // address of wide-character string
-	int  cchWideChar,    // number of characters in string
-	LPSTR  lpMultiByteStr,    // address of buffer for new string
-	int  cchMultiByte,    // size of buffer
-	LPCSTR  lpDefaultChar,    // address of default for unmappable characters
-	LPBOOL  lpUsedDefaultChar     // address of flag set when default char. used
-	);"
-
-    <apicall: ulongReturn "MultiByteToWideChar" ( uint32 uint32 structIn int32 structOut int32 structIn structOut) module: "kernel32.dll" >
-    ^self primitiveFailed
-
-    "Modified (comment): / 12-08-2011 / 16:37:14 / cg"
-!
-
 writePrivateProfileString: appName keyName: keyName profileString: profString fileName: aString
 
    ^self primWritePrivateProfileString: appName keyName: keyName profileString: profString fileName: aString
@@ -7997,25 +7949,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
@@ -8041,20 +7993,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);
-		}
-	    }
-	} 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);
@@ -8080,160 +8035,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.
@@ -13543,139 +13498,176 @@
 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]
+
+
 
 
 "
@@ -14390,24 +14382,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)) {
-		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
 
@@ -14857,12 +14850,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.
     ]
 ! !
 
@@ -16459,15 +16452,15 @@
 !Win32OperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.439 2012/10/29 11:40:57 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.442 2012/11/21 16:34:54 anwild Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.439 2012/10/29 11:40:57 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.442 2012/11/21 16:34:54 anwild Exp §'
 !
 
 version_SVN
-    ^ '$Id: Win32OperatingSystem.st 10858 2012-10-29 22:07:56Z vranyj1 $'
+    ^ '$Id: Win32OperatingSystem.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 
 ! !
 
--- a/abbrev.stc	Wed Nov 28 10:22:05 2012 +0000
+++ b/abbrev.stc	Fri Nov 30 17:19:23 2012 +0000
@@ -394,3 +394,7 @@
 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	Wed Nov 28 10:22:05 2012 +0000
+++ b/bc.mak	Fri Nov 30 17:19:23 2012 +0000
@@ -335,8 +335,10 @@
 $(OUTDIR)InvalidCodeError.$(O) InvalidCodeError.$(H): InvalidCodeError.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)InvalidModeError.$(O) InvalidModeError.$(H): InvalidModeError.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)InvalidOperationError.$(O) InvalidOperationError.$(H): InvalidOperationError.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)InvalidTypeError.$(O) InvalidTypeError.$(H): InvalidTypeError.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)KeyNotFoundError.$(O) KeyNotFoundError.$(H): KeyNotFoundError.st $(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)MallocFailure.$(O) MallocFailure.$(H): MallocFailure.st $(INCLUDE_TOP)\stx\libbasic\AllocationFailure.$(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)MethodNotAppropriateError.$(O) MethodNotAppropriateError.$(H): MethodNotAppropriateError.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)NonBooleanReceiverError.$(O) NonBooleanReceiverError.$(H): NonBooleanReceiverError.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)OpenError.$(O) OpenError.$(H): OpenError.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)PositionError.$(O) PositionError.$(H): PositionError.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)
@@ -352,6 +354,7 @@
 $(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)
 $(OUTDIR)WriteError.$(O) WriteError.$(H): WriteError.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)WrongProceedabilityError.$(O) WrongProceedabilityError.$(H): WrongProceedabilityError.st $(INCLUDE_TOP)\stx\libbasic\SignalError.$(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)AbstractClassInstantiationError.$(O) AbstractClassInstantiationError.$(H): AbstractClassInstantiationError.st $(INCLUDE_TOP)\stx\libbasic\MethodNotAppropriateError.$(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)BadLiteralsError.$(O) BadLiteralsError.$(H): BadLiteralsError.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)DecodingError.$(O) DecodingError.$(H): DecodingError.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)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)
--- a/libInit.cc	Wed Nov 28 10:22:05 2012 +0000
+++ b/libInit.cc	Fri Nov 30 17:19:23 2012 +0000
@@ -1,5 +1,5 @@
 /*
- * $Header$
+ * $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.
@@ -302,8 +302,10 @@
 _InvalidCodeError_Init(pass,__pRT__,snd);
 _InvalidModeError_Init(pass,__pRT__,snd);
 _InvalidOperationError_Init(pass,__pRT__,snd);
+_InvalidTypeError_Init(pass,__pRT__,snd);
 _KeyNotFoundError_Init(pass,__pRT__,snd);
 _MallocFailure_Init(pass,__pRT__,snd);
+_MethodNotAppropriateError_Init(pass,__pRT__,snd);
 _NonBooleanReceiverError_Init(pass,__pRT__,snd);
 _OpenError_Init(pass,__pRT__,snd);
 _PositionError_Init(pass,__pRT__,snd);
@@ -319,6 +321,7 @@
 _WeakDependencyDictionary_Init(pass,__pRT__,snd);
 _WriteError_Init(pass,__pRT__,snd);
 _WrongProceedabilityError_Init(pass,__pRT__,snd);
+_AbstractClassInstantiationError_Init(pass,__pRT__,snd);
 _BadLiteralsError_Init(pass,__pRT__,snd);
 _DecodingError_Init(pass,__pRT__,snd);
 _EncodingError_Init(pass,__pRT__,snd);
@@ -343,6 +346,9 @@
 _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);
@@ -356,14 +362,19 @@
 _UnixOperatingSystem_Init(pass,__pRT__,snd);
 #endif /* UNIX */
 #ifdef WIN32
-_Win32Process_Init(pass,__pRT__,snd);
 _WindowsDesktop_Init(pass,__pRT__,snd);
 _PCFilename_Init(pass,__pRT__,snd);
-_Win32Handle_Init(pass,__pRT__,snd);
+_Win32Constants_Init(pass,__pRT__,snd);
 _Win32FILEHandle_Init(pass,__pRT__,snd);
-_Win32Constants_Init(pass,__pRT__,snd);
+_Win32Handle_Init(pass,__pRT__,snd);
 _Win32OperatingSystem_Init(pass,__pRT__,snd);
+_Win32Process_Init(pass,__pRT__,snd);
 #endif /* WIN32 */
+#ifdef VMS
+_OpenVMSFileHandle_Init(pass,__pRT__,snd);
+_OpenVMSFilename_Init(pass,__pRT__,snd);
+_OpenVMSOperatingSystem_Init(pass,__pRT__,snd);
+#endif /* VMS */
 
 
 __END_PACKAGE__();
--- a/libbasic.rc	Wed Nov 28 10:22:05 2012 +0000
+++ b/libbasic.rc	Fri Nov 30 17:19:23 2012 +0000
@@ -3,7 +3,7 @@
 // automagically generated from the projectDefinition: stx_libbasic.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     6,2,1,102
+  FILEVERSION     6,2,1,108
   PRODUCTVERSION  6,2,2,1
 #if (__BORLANDC__)
   FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
@@ -20,12 +20,12 @@
     BEGIN
       VALUE "CompanyName", "eXept Software AG\0"
       VALUE "FileDescription", "Smalltalk/X Basic Classes (LIB)\0"
-      VALUE "FileVersion", "6.2.1.102\0"
+      VALUE "FileVersion", "6.2.1.108\0"
       VALUE "InternalName", "stx:libbasic\0"
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2012\nCopyright eXept Software AG 1998-2012\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.2.1\0"
-      VALUE "ProductDate", "Thu, 18 Oct 2012 13:48:42 GMT\0"
+      VALUE "ProductDate", "Fri, 02 Nov 2012 15:04:42 GMT\0"
     END
 
   END
--- a/stx_libbasic.st	Wed Nov 28 10:22:05 2012 +0000
+++ b/stx_libbasic.st	Fri Nov 30 17:19:23 2012 +0000
@@ -480,6 +480,9 @@
         ImmutableString
         InvalidEncodingError
         PipeStream
+        MethodNotAppropriateError
+        AbstractClassInstantiationError
+        InvalidTypeError
         Symbol
         Unicode16String
         #'CharacterEncoderImplementations::EBCDIC'
@@ -567,13 +570,13 @@
 !stx_libbasic class methodsFor:'documentation'!
 
 version
-    ^ '$Id: stx_libbasic.st 10860 2012-10-31 17:49:25Z vranyj1 $'
+    ^ '$Id: stx_libbasic.st 10876 2012-11-30 17:19:23Z vranyj1 $'
 !
 
 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.101 2012/07/18 17:13:14 cg Exp '
 !
 
 version_SVN
-    ^ '$Id:: stx_libbasic.st 10860 2012-10-31 17:49:25Z vranyj1                                                                     $'
+    ^ '$Id:: stx_libbasic.st 10876 2012-11-30 17:19:23Z vranyj1                                                                     $'
 ! !