Merged with /trunk jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Fri, 30 Nov 2012 17:20:01 +0000
branchjv
changeset 3095 5843e7139014
parent 3094 4ec645987e2d
child 3096 a35270f0fad8
Merged with /trunk
AbstractSourceCodeManager.st
CVSSourceCodeManager.st
Change.st
ChangeSet.st
FileBasedSourceCodeManager.st
Make.spec
MessageTally.st
MessageTracer.st
MethodChange.st
MethodFinder.st
PerforceSourceCodeManager.st
ProjectChecker.st
SourceCodeManagerUtilities.st
SourceCodeManagerUtilitiesForContainerBasedManagers.st
WrappedMethod.st
bc.mak
bmake.bat
lccmake.bat
libInit.cc
libbasic3.rc
mingwmake.bat
stx_libbasic3.st
vcmake.bat
--- a/AbstractSourceCodeManager.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/AbstractSourceCodeManager.st	Fri Nov 30 17:20:01 2012 +0000
@@ -378,7 +378,7 @@
 !
 
 utilities
-    "Returns 'utilities' object that can be used by tools. 
+    "Returns a 'utilities' object that can be used by tools. 
 
      By default, it returns an instance of
      SourceCodeManagerUtilities with receiver as its
@@ -390,6 +390,11 @@
             ifFalse: [ SourceCodeManagerUtilitiesForWorkspaceBasedManagers ]
       ) forManager: self
 
+    "
+     SourceCodeManager defaultManager
+     SourceCodeManager defaultManager utilities
+    "
+
     "Created: / 10-10-2011 / 15:10:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (format): / 25-07-2012 / 17:08:05 / cg"
 !
@@ -841,7 +846,7 @@
      methodCategoriesInOtherPackages methodCategoryInOtherPackages
      msg answer isDefaultAnswer labels actions hasUnassignedExtensions
      unassignedMethods methodCategoriesWithUnassignedMethods methodCategoryWithUnassignedMethods 
-     args|
+     args anyPackageChange|
 
     checkInClassPackageOnly := false.
 
@@ -972,21 +977,28 @@
     "/ ok, move them over
     answer == true ifTrue:[
         "/ change all method's packageID to the classes packageId
+        anyPackageChange := false.
         aClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
             mthd package == PackageId noProjectID ifTrue:[
                 mthd makeLocalStringSource.
-                mthd setPackage:clsPackage
+                mthd setPackage:clsPackage.
+                anyPackageChange := true.
             ]
         ].
         aClass allPrivateClassesDo:[:eachPrivateClass |
             aClass setPackage:clsPackage.
             eachPrivateClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
-                mthd makeLocalStringSource.
-                mthd setPackage:clsPackage
+                mthd package ~= clsPackage ifTrue:[
+                    mthd makeLocalStringSource.
+                    mthd setPackage:clsPackage.
+                    anyPackageChange := true.
+                ]
             ]
         ].
-        aClass changed:#projectOrganization.
-        Smalltalk changed:#projectOrganization with:(Array with:aClass). 
+        anyPackageChange ifTrue:[
+            aClass changed:#projectOrganization.
+            Smalltalk changed:#projectOrganization with:(Array with:aClass). 
+        ].
     ].
     ^ #base
 
@@ -1925,7 +1937,7 @@
 
     aClass revision isNil ifTrue:[ 
         force ifFalse:[
-            ('CVSSourceCodeManager [warning]: class ' , className, ' has no revision string') errorPrintCR.
+            ('SourceCodeManager [warning]: class ' , className, ' has no revision string') errorPrintCR.
 
             AbortAllOperationWantedQuery query ifTrue:[
                 allLabel := #('Cancel All').
@@ -1951,8 +1963,8 @@
                             values:(allValue , #(false #checkIn #create))
                             default:#create.
             ].
-            answer == false ifTrue:[ AbortSignal raise. ^ false ].
-            answer == #cancelAll ifTrue:[ AbortAllSignal raise. ^ false ].
+            answer == false ifTrue:[ AbortOperationRequest raise. ^ false ].
+            answer == #cancelAll ifTrue:[ AbortAllOperationRequest raise. ^ false ].
             answer == #create ifTrue:[ 
                 self updateVersionMethodOf:aClass for:'$' , 'Header' , '$'.  "/ concatenated to avoid RCS expansion
             ].
@@ -2217,7 +2229,12 @@
     ].
 
     packageDir := self directoryFromSourceInfo:sourceInfo.
-    moduleDir := self moduleFromSourceInfo:sourceInfo.  "/ use the modules name as CVS module
+    packageDir isNil ifTrue:[
+        packageDir := aClass package asPackageId directory.
+        moduleDir := aClass package asPackageId module.
+    ] ifFalse:[
+        moduleDir := self moduleFromSourceInfo:sourceInfo.  "/ use the modules name as CVS module
+    ].
     classFileName := self containerFromSourceInfo:sourceInfo.
     ^ self 
         streamForClass:aClass
@@ -2266,7 +2283,7 @@
 
     packageMode := self checkMethodPackagesOf:aClass.
     packageMode == #base ifTrue:[
-        filter := [:mthd | mthd package = aClass package].
+        filter := [:mthd | mthd package == aClass package].
     ].
 
     tempDir := Filename newTemporaryDirectory.
@@ -2740,6 +2757,23 @@
     "Modified (comment): / 23-12-2011 / 19:03:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+revisionForTag:tagName inClass:aClass
+    "retrieve the revision number associated to a particular tag/symbolic version.
+     Nil if unknown"
+
+    |tagsAndVersions|
+
+    tagsAndVersions := self knownTagsAndRevisionsFor:aClass.
+    tagsAndVersions isEmptyOrNil ifTrue:[ ^ nil ].
+    ^ tagsAndVersions at:tagName ifAbsent:nil.
+
+    "
+     SourceCodeManager revisionForTag:'stable' inClass:Array
+    "
+
+    "Created: / 08-02-2011 / 10:18:00 / cg"
+!
+
 revisionInfoFromRCSString:aString
     "{ Pragma: +optSpace }"
 
@@ -3787,15 +3821,15 @@
 !AbstractSourceCodeManager class methodsFor:'documentation'!
 
 version
-    ^ '$Id: AbstractSourceCodeManager.st 1978 2012-11-07 23:59:23Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.305 2012/11/22 21:50:24 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.299 2012/09/26 18:29:58 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.305 2012/11/22 21:50:24 stefan Exp §'
 !
 
 version_SVN
-    ^ '$Id: AbstractSourceCodeManager.st 1978 2012-11-07 23:59:23Z vranyj1 $'
+    ^ '$Id: AbstractSourceCodeManager.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
 
 AbstractSourceCodeManager initialize!
--- a/CVSSourceCodeManager.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/CVSSourceCodeManager.st	Fri Nov 30 17:20:01 2012 +0000
@@ -185,6 +185,14 @@
 
 !CVSSourceCodeManager class methodsFor:'initialization'!
 
+addExeptsPublicRepositoryToModuleRoots
+    CVSModuleRoots at:'stx' put:(self exeptsPublicSTXRepositoryModuleRoot)
+!
+
+exeptsPublicSTXRepositoryModuleRoot
+    ^ ':pserver:cvs@cvs.smalltalk-x.de:/cvs/stx'.
+!
+
 forgetDisabledModules
     DisabledModules := nil.
 !
@@ -209,7 +217,7 @@
     DisabledModules := nil.
     CVSModuleRoots isNil ifTrue:[
         CVSModuleRoots := Dictionary new.
-        CVSModuleRoots at:'stx' put:':pserver:cvs@cvs.smalltalk-x.de:/cvs/stx'.
+        "/ self addExeptsPublicRepositoryToModuleRoots.
     ].
 
     "/
@@ -1086,6 +1094,90 @@
     "Created: / 28-02-2012 / 17:30:34 / cg"
 !
 
+fetchRevisionsFromRLogStream:inStream searchForKeyword:searchFor
+    "helper for revisionsInModule*"
+
+    |info line s revisionUsed fileName|
+
+    info := OrderedCollection new.
+
+    [inStream atEnd] whileFalse:[
+        line:= inStream nextLine.
+        line notNil ifTrue:[
+            line := line withoutSeparators.
+            line notEmpty ifTrue:[
+                s := line restAfter:'RCS file:' withoutSeparators:true. 
+                s notNil ifTrue:[ 
+                    (UnixFilename named:s) directory baseName = 'Attic' ifTrue:[
+                        "/ file has been removed in the repository
+                        revisionUsed := #deleted
+                    ].
+                    fileName := (UnixFilename named:s) baseName.
+                    (fileName endsWith:',v') ifTrue:[
+                        fileName := fileName copyWithoutLast:2.
+                    ] ifFalse:[
+                        self halt:'oops - should not happen'.
+                    ].
+                ].
+                s := line restAfter:searchFor withoutSeparators:true.
+                s notNil ifTrue:[ |i|
+                    i := s indexOfSeparator.
+                    i ~~ 0 ifTrue:[
+                        s := s copyTo:i-1
+                    ].
+                    revisionUsed := revisionUsed ? s.  "/ deleted-info comes from the Attic-component in the path
+                    info add:(fileName -> revisionUsed).
+                    fileName := revisionUsed := nil.
+                ].                        
+            ].                        
+        ]
+    ].
+    ^ info
+!
+
+fetchRevisionsFromRLogStream:inStream searchForKeyword:searchFor ignoreDeleted:ignoreDeleted
+    "helper for revisionsInModule*"
+
+    |info line s revisionUsed fileName|
+
+    info := OrderedCollection new.
+
+    [inStream atEnd] whileFalse:[
+        line:= inStream nextLine.
+        line notNil ifTrue:[
+            line := line withoutSeparators.
+            line notEmpty ifTrue:[
+                s := line restAfter:'RCS file:' withoutSeparators:true. 
+                s notNil ifTrue:[ 
+                    (UnixFilename named:s) directory baseName = 'Attic' ifTrue:[
+                        "/ file has been removed in the repository
+                        revisionUsed := #deleted
+                    ].
+                    fileName := (UnixFilename named:s) baseName.
+                    (fileName endsWith:',v') ifTrue:[
+                        fileName := fileName copyWithoutLast:2.
+                    ] ifFalse:[
+                        self halt:'oops - should not happen'.
+                    ].
+                ].
+                s := line restAfter:searchFor withoutSeparators:true.
+                s notNil ifTrue:[ |i|
+                    i := s indexOfSeparator.
+                    i ~~ 0 ifTrue:[
+                        s := s copyTo:i-1
+                    ].
+                    revisionUsed := revisionUsed ? s.  "/ deleted-info comes from the Attic-component in the path
+                    (revisionUsed ~~ #deleted or:[ ignoreDeleted not ]) ifTrue:[
+                        info add:(fileName -> revisionUsed).
+                    ].
+                    fileName := revisionUsed := nil.
+                ].                        
+            ].                        
+        ]
+    ].
+    ^ info
+!
+
 getCVSROOTForModule:aModuleName
     "internal: used when accessing a source repository.
      Return the CVSROOT which provides the sources for a particular module.
@@ -4690,7 +4782,7 @@
     "return a list of filename-module associations for the containers in
      a package directory. Return nil on failure."
 
-    |tempDir modulePath inStream line s info fileName|
+    |tempDir modulePath inStream info|
 
     self use_rlog ifFalse:[
          "/ Uses 'cvs status' - rlog seems not to work
@@ -4731,38 +4823,7 @@
                             ifTrue:[ 'head:' ]
                             ifFalse:[ 'revision ' ].
 
-        info := OrderedCollection new.
-        [inStream atEnd] whileFalse:[
-            line:= inStream nextLine.
-            line notNil ifTrue:[
-                line := line withoutSeparators.
-                line notEmpty ifTrue:[
-                    s := line restAfter:'RCS file:' withoutSeparators:true. 
-                    s notNil ifTrue:[ 
-                        (UnixFilename named:s) directory baseName = 'Attic' ifTrue:[
-                            "/ file has been removed in the repository
-                            revisionUsed := #deleted
-                        ].
-                        fileName := (UnixFilename named:s) baseName.
-                        (fileName endsWith:',v') ifTrue:[
-                            fileName := fileName copyWithoutLast:2.
-                        ] ifFalse:[
-                            self halt:'oops - should not happen'.
-                        ].
-                    ].
-                    s := line restAfter:searchFor withoutSeparators:true.
-                    s notNil ifTrue:[ |i|
-                        i := s indexOfSeparator.
-                        i ~~ 0 ifTrue:[
-                            s := s copyTo:i-1
-                        ].
-                        revisionUsed := revisionUsed ? s.  "/ deleted-info comes from the Attic-component in the path
-                        info add:(fileName -> revisionUsed).
-                        fileName := revisionUsed := nil.
-                    ].                        
-                ].                        
-            ]
-        ].
+        info := self fetchRevisionsFromRLogStream:inStream searchForKeyword:searchFor.
     ] ensure:[
         inStream notNil ifTrue:[inStream close].
     ].
@@ -4779,6 +4840,58 @@
     "Created: / 12-10-2006 / 10:12:59 / cg"
 !
 
+revisionsInModule:module directory:packageDir taggedAs:symbolicName
+    "return a list of filename-module associations for the containers in
+     a package directory. Return nil on failure."
+
+    |tempDir modulePath inStream info|
+
+    self use_rlog ifFalse:[
+         "/ Uses 'cvs status' - rlog seems not to work
+
+        ^ nil.
+    ].
+
+    modulePath :=  module , '/' , packageDir. 
+
+    self activityNotification:('Fetching revision infos for %1%2'
+                                    bindWith:modulePath
+                                    with:(' tagged as "',symbolicName,'"')).
+
+    [
+        |revisionUsed tagSelector searchFor|
+
+        tagSelector := '-S -r"%1"' bindWith:symbolicName.
+        inStream := self 
+                        executeCVSCommand:('rlog -N -l %1 %2' bindWith:tagSelector with:modulePath) 
+                        module:module 
+                        inDirectory:tempDir 
+                        log:true 
+                        pipe:true.
+
+        inStream isNil ifTrue:[
+            ('CVSSourceCodeManager [error]: cannot open pipe to cvs rlog ', modulePath) errorPrintCR.
+            ^ nil
+        ].
+
+        "/
+        "/ read the commands pipe output and extract the container infos
+        "/
+        info := self fetchRevisionsFromRLogStream:inStream searchForKeyword:'revision '.
+    ] ensure:[
+        inStream notNil ifTrue:[inStream close].
+    ].
+    self breakPoint:#cg.
+    ^ info
+
+    "
+     SourceCodeManager 
+        revisionsInModule:'stx' directory:'libbasic2' taggedAs:'stable'
+    "
+
+    "Created: / 12-10-2006 / 10:12:59 / cg"
+!
+
 setSymbolicName:symbolicName revision:rev overWrite:overWriteBool class:aClass
     "set a symbolicName for revision rev.
      If rev is nil, set it for the head (most recent) revision.
@@ -4914,7 +5027,7 @@
                                         ].
         pathesInModuleAsArgument := pathesInModuleAsArgument asStringCollection asStringWith:Character space.
 
-        self activityNotification:'setting symbolic name for: ', pathesInModuleAsArgument.
+        self activityNotification:('setting symbolic name "%1" for: %2' bindWith:symbolicName with:pathesInModuleAsArgument).
 
         errorStream := '' writeStream.
         outStream := '' writeStream.
@@ -5076,15 +5189,15 @@
 !CVSSourceCodeManager class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/CVSSourceCodeManager.st,v 1.439 2012/09/26 16:33:08 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/CVSSourceCodeManager.st,v 1.444 2012/10/30 14:35:50 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/CVSSourceCodeManager.st,v 1.439 2012/09/26 16:33:08 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic3/CVSSourceCodeManager.st,v 1.444 2012/10/30 14:35:50 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: CVSSourceCodeManager.st 1971 2012-09-27 19:37:25Z vranyj1 $'
+    ^ '$Id: CVSSourceCodeManager.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
 
 CVSSourceCodeManager initialize!
--- a/Change.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/Change.st	Fri Nov 30 17:20:01 2012 +0000
@@ -49,7 +49,7 @@
 !Change class methodsFor:'others'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/Change.st,v 1.61 2012/07/31 12:42:04 vrany Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic3/Change.st,v 1.62 2012/10/30 14:25:24 cg Exp §'
 ! !
 
 !Change class methodsFor:'support'!
@@ -444,8 +444,16 @@
     "Created: / 01-08-2012 / 16:34:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+isMethodChangeForExtensionsVersionMethod
+    "true if this is a change for an extensionsVersion method"
+
+    ^ false
+
+    "Created: / 7.2.1998 / 19:26:50 / cg"
+!
+
 isMethodChangeForVersionMethod
-    "true if this is a method's code change (not package, category etc.)"
+    "true if this is a change for a version method"
 
     ^ false
 
@@ -521,9 +529,9 @@
 !Change class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/Change.st,v 1.61 2012/07/31 12:42:04 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/Change.st,v 1.62 2012/10/30 14:25:24 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: Change.st 1957 2012-09-05 11:45:38Z vranyj1 $'
+    ^ '$Id: Change.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
--- a/ChangeSet.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/ChangeSet.st	Fri Nov 30 17:20:01 2012 +0000
@@ -183,6 +183,33 @@
     "Modified (format): / 01-12-2011 / 19:10:22 / cg"
 !
 
+forExistingClass:aClass withExtensions:withExtensions
+    "build a changeSet for some given full class with or without extensions.
+     That does of course not give deltas, but instead reflects the current
+     state of the given class.
+     It is useful in conjunction with the other utility methods,
+     for example, when building patchLists, diffSets etc."
+
+    ^ self
+        forExistingClass:aClass 
+        withExtensions:withExtensions
+        withLooseMethods:false
+        extensionsOnly:false
+
+    "
+     Object hasExtensions   
+     Object extensions size           
+
+     (ChangeSet forExistingClass:Object) size
+     (ChangeSet forExistingClass:Object withExtensions:false) size  
+
+     (ChangeSet forExistingClass:stx_libbasic3 withExtensions:false)   
+    "
+
+    "Created: / 12-10-2006 / 18:13:02 / cg"
+    "Modified: / 12-10-2006 / 23:46:05 / cg"
+!
+
 forExistingClass:aClass withExtensions:withExtensions extensionsOnly:extensionsOnly
     "build a changeSet for some given full class, the base-class or the extensions only,
      as specified by the with-arguments.
@@ -191,22 +218,104 @@
      It is useful in conjunction with the other utility methods,
      for example, when building patchLists, diffSets etc."
 
-    |changeSet classPackage|
+    ^ self
+        forExistingClass:aClass 
+        withExtensions:withExtensions 
+        withLooseMethods:false
+        extensionsOnly:extensionsOnly
+
+    "
+     ChangeSet forExistingClass:ChangeSet
+
+     Rectangle hasExtensions
+     Rectangle extensions
+
+     ChangeSet forExistingClass:Rectangle withExtensions:true extensionsOnly:false
+     ChangeSet forExistingClass:Rectangle withExtensions:false extensionsOnly:false
+     ChangeSet forExistingClass:Rectangle withExtensions:false extensionsOnly:true
+    "
+
+    "Created: / 12-10-2006 / 18:13:02 / cg"
+    "Modified: / 12-10-2006 / 23:46:05 / cg"
+!
+
+forExistingClass:aClass withExtensions:withExtensions withLooseMethods:withLooseMethods
+    "build a changeSet for some given full class with or without extensions.
+     That does of course not give deltas, but instead reflects the current
+     state of the given class.
+     It is useful in conjunction with the other utility methods,
+     for example, when building patchLists, diffSets etc."
+
+    ^ self
+        forExistingClass:aClass 
+        withExtensions:withExtensions 
+        withLooseMethods:withLooseMethods
+        extensionsOnly:false
+
+    "
+     Object hasExtensions   
+     Object extensions size           
+
+     (ChangeSet forExistingClass:Object) size
+     (ChangeSet forExistingClass:Object withExtensions:false) size  
+
+     (ChangeSet forExistingClass:stx_libbasic3 withExtensions:false)   
+    "
+
+    "Created: / 12-10-2006 / 18:13:02 / cg"
+    "Modified: / 12-10-2006 / 23:46:05 / cg"
+!
+
+forExistingClass:aClass withExtensions:withExtensions withLooseMethods:withLooseMethods extensionsOnly:extensionsOnly
+    "build a changeSet for some given full class, the base-class or the extensions only,
+     as specified by the with-arguments.
+     That does of course not give deltas, but instead reflects the current
+     state of the given class.
+     It is useful in conjunction with the other utility methods,
+     for example, when building patchLists, diffSets etc."
+
+    |changeSet classPackage notInClassesPackage realExtensions looseMethods|
 
     changeSet := self forExistingClass:aClass.
     classPackage := aClass package.
 
+    notInClassesPackage :=
+                [:change |
+                    change isMethodChange 
+                    and:[ change package ~= classPackage ]
+                ].
+
+    realExtensions :=
+                [:change |
+                    change isMethodChange 
+                    and:[ change package ~= classPackage 
+                    and:[ change package ~~ PackageId noProjectID ]]
+                ].
+
+    looseMethods :=
+                [:change |
+                    change isMethodChange 
+                    and:[change package == PackageId noProjectID ]
+                ].
+
     extensionsOnly ifTrue:[
-        ^ changeSet 
-            select:[:change |
-                change isMethodChange and:[ change package ~= classPackage ]
-            ].
+        withLooseMethods ifTrue:[
+            ^ changeSet select:notInClassesPackage
+        ].
+
+        ^ changeSet select:realExtensions.
     ].
+
     withExtensions ifFalse:[
-        ^ changeSet 
-            reject:[:change |
-                change isMethodChange and:[ change package ~= classPackage ]
-            ].
+        withLooseMethods ifFalse:[
+            ^ changeSet reject:notInClassesPackage
+        ].
+
+        ^ changeSet reject:realExtensions.
+    ].
+
+    withLooseMethods ifFalse:[
+        ^ changeSet reject:looseMethods.
     ].
 
     ^ changeSet
@@ -293,17 +402,12 @@
     packageClasses := ProjectDefinition searchForClassesWithProject: package.
     packageExtensions := ProjectDefinition searchForExtensionsWithProject: package.
     changeSet := self forExistingMethods: packageExtensions.
-    packageClasses do:
-        [:cls|
-        (ignoreAutoloaded not and:[cls isLoaded not])
-            ifTrue:[cls autoload].
-        cls isLoaded
-            ifTrue:
-                [changeSet addAll:
-                    (self
-                        forExistingClass:cls
-                        withExtensions:false
-                        extensionsOnly:false)]].
+    packageClasses do:[:cls|
+        (ignoreAutoloaded not and:[cls isLoaded not]) ifTrue:[cls autoload].
+        cls isLoaded ifTrue: [
+            changeSet addAll: (self forExistingClass:cls withExtensions:false)
+        ]
+    ].
     changeSet name: 'Package ' , package.
     ^changeSet
 
@@ -635,6 +739,8 @@
                     |parser tree ns pkg|
 
                     parser := Parser for:chunk.
+                    "/ parser parseForCode.
+
                     tree := parser 
                                 parseExpressionWithSelf:nil 
                                 notifying:nil 
@@ -988,11 +1094,14 @@
 addMethodPackageChange:aMethod package:newPackage in:aClass
     "add a methodPackage change to the receiver"
 
-    |newChange|
+    |newChange selector|
+
+    selector := (aClass selectorAtMethod:aMethod).
+    selector isNil ifTrue:[^ self].
 
     newChange := MethodPackageChange 
                         class:aClass
-                        selector:(aClass selectorAtMethod:aMethod)
+                        selector:selector
                         package:newPackage.
     self rememberChangedClass:aClass.
     self addChange:newChange
@@ -1282,7 +1391,7 @@
     (self changeSelectors includes:selector) ifFalse:[^ false].
 
     nameOfNonMetaClass := aClass theNonMetaclass name.
-    (self changedClasses contains:[:aClass | aClass theNonMetaclass name = nameOfNonMetaClass]) ifFalse:[^ false].
+    (self changedClasses contains:[:someClass | someClass theNonMetaclass name = nameOfNonMetaClass]) ifFalse:[^ false].
 
     nameOfClass := aClass name.
 
@@ -1464,16 +1573,15 @@
 !
 
 condenseChanges
-
     | changesToRemove changesToKeep |
+
     changesToKeep := self class new.
     changesToRemove := self class new.
-    self reverseDo:
-	[:change|
-	(changesToKeep anySatisfy:[:each|each isForSameAs: change])
-	    ifTrue:[changesToRemove add: change]
-	    ifFalse:[changesToKeep add: change]
-	].
+    self reverseDo:[:change|
+        (changesToKeep anySatisfy:[:each|each isForSameAs: change])
+            ifTrue:[changesToRemove add: change]
+            ifFalse:[changesToKeep add: change]
+    ].
     self condenseChanges: changesToRemove.
 
     "Created: / 22-10-2008 / 13:05:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
@@ -1485,7 +1593,7 @@
     changesToRemove notEmpty ifTrue:[
         changedClasses := changeSelectors := nil.
         self removeAll:changesToRemove.
-        self changed.
+        "/ self changed. "/  -- removeAll already sends out a notification
         Smalltalk changed:#currentChangeSet with:self.
     ].
 
@@ -1603,7 +1711,7 @@
         (aChange isMethodChange or:[aChange isMethodRemoveChange]) ifTrue:[
             removeThis := false.
             mClass := aChange changeClass.
-            mClass notNil ifTrue:[
+            (mClass notNil and:[mClass package ~= aPackageSymbol]) ifTrue:[
                 mthd := mClass compiledMethodAt:(aChange selector).
                 mthd isNil ifTrue:[
                     aChange isMethodRemoveChange ifTrue:[
@@ -3486,7 +3594,7 @@
 !
 
 version_SVN
-    ^ '$Id:: ChangeSet.st 1971 2012-09-27 19:37:25Z vranyj1                                                                         $'
+    ^ '$Id:: ChangeSet.st 1981 2012-11-30 17:20:01Z vranyj1                                                                         $'
 ! !
 
 !ChangeSet::ClassSourceWriter::ClassInfo class methodsFor:'instance creation'!
@@ -4159,13 +4267,13 @@
 !ChangeSet class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.200 2012/09/26 16:34:02 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.210 2012/11/06 01:41:21 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.200 2012/09/26 16:34:02 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.210 2012/11/06 01:41:21 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: ChangeSet.st 1971 2012-09-27 19:37:25Z vranyj1 $'
+    ^ '$Id: ChangeSet.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
--- a/FileBasedSourceCodeManager.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/FileBasedSourceCodeManager.st	Fri Nov 30 17:20:01 2012 +0000
@@ -257,7 +257,7 @@
 
     packageMode := self checkMethodPackagesOf:aClass.
     packageMode == #base ifTrue:[
-        filter := [:mthd | mthd package = aClass package].
+        filter := [:mthd | mthd package == aClass package].
     ].
 
     [
@@ -464,11 +464,11 @@
 !FileBasedSourceCodeManager class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/FileBasedSourceCodeManager.st,v 1.7 2012/07/24 07:41:42 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/FileBasedSourceCodeManager.st,v 1.8 2012/11/07 16:55:44 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/FileBasedSourceCodeManager.st,v 1.7 2012/07/24 07:41:42 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic3/FileBasedSourceCodeManager.st,v 1.8 2012/11/07 16:55:44 cg Exp §'
 !
 
 version_FileRepository
@@ -476,5 +476,5 @@
 !
 
 version_SVN
-    ^ '$Id: FileBasedSourceCodeManager.st 1937 2012-07-25 08:46:08Z vranyj1 $'
+    ^ '$Id: FileBasedSourceCodeManager.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
--- a/Make.spec	Sun Nov 18 19:46:19 2012 +0000
+++ b/Make.spec	Fri Nov 30 17:20:01 2012 +0000
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libbasic3/Make.spec,v 1.80 2012/07/31 13:30:56 vrany Exp $
+# $Header: /cvs/stx/stx/libbasic3/Make.spec,v 1.81 2012/10/31 16:07:40 stefan Exp $
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libbasic3.
--- a/MessageTally.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/MessageTally.st	Fri Nov 30 17:20:01 2012 +0000
@@ -162,30 +162,43 @@
 "
 ! !
 
+!MessageTally class methodsFor:'constants'!
+
+detailedSamplingIntervalMS
+    ^ 1
+!
+
+normalSamplingIntervalMS
+    ^ 10
+! !
+
 !MessageTally class methodsFor:'spying-private'!
 
 spyLeafOn:aBlock interval:ms to:outStream
-    "evaluate aBlock and output leaf method statistics on outStream"
+    "evaluate aBlock and output leaf method statistics on outStream.
+     Return the value from aBlock."
 
-    |aTally|
+    |aTally retVal|
 
     aTally := self new.
 
     [
         [
-            aTally spyLeafOn:aBlock interval:ms.
+            retVal := aTally spyLeafOn:aBlock interval:ms.
         ] ifCurtailed:[
             outStream nextPutLine:'TALLY: block returned'.
         ]
     ] ensure:[
         aTally printLeafStatisticOn:outStream
     ].
+    ^ retVal
 
     "Modified: 22.3.1997 / 16:50:47 / cg"
 !
 
 spyOn:aBlock interval:ms to:outStream
-    "evaluate aBlock and output full statistics on outstream"
+    "evaluate aBlock and output full statistics on outstream.
+     Return the value from aBlock."
 
     |aTally retVal|
 
@@ -212,7 +225,7 @@
      The Tick is 1ms for more detailed measurement.
      Notice: not all architectures support such a small timer interval."
 
-    ^ self spyOn:aBlock interval:1 to:Transcript
+    ^ self spyOn:aBlock interval:(self detailedSamplingIntervalMS) to:Transcript
 
     "Modified: 22.3.1997 / 16:26:39 / cg"
 !
@@ -222,7 +235,7 @@
      The Tick is 1ms for more detailed measurement.
      Notice: not all architectures support such a small timer interval."
 
-    ^ self spyLeafOn:aBlock interval:1 to:Transcript
+    ^ self spyLeafOn:aBlock interval:(self detailedSamplingIntervalMS) to:Transcript
 
     "Created: 20.3.1997 / 20:41:53 / cg"
     "Modified: 22.3.1997 / 16:26:47 / cg"
@@ -232,7 +245,7 @@
     "evaluate aBlock and output leaf method statistics on the Transcript.
      The Tick is 10ms for less detailed measurements."
 
-    ^ self spyLeafOn:aBlock interval:10 to:Transcript
+    ^ self spyLeafOn:aBlock interval:(self normalSamplingIntervalMS) to:Transcript
 
     "Created: 20.3.1997 / 20:41:40 / cg"
     "Modified: 22.3.1997 / 16:26:49 / cg"
@@ -242,7 +255,7 @@
     "evaluate aBlock and output full statistics on the Transcript.
      The Tick is 10ms for less detailed measurements."
 
-    ^ self spyOn:aBlock interval:10 to:Transcript
+    ^ self spyOn:aBlock interval:(self normalSamplingIntervalMS) to:Transcript
 
     "Modified: 22.3.1997 / 16:26:51 / cg"
 ! !
@@ -513,9 +526,11 @@
 !MessageTally methodsFor:'spy setup'!
 
 spyLeafOn:aBlock interval:ms
-    "spy on execution time; generate information on leaf nodes only"
+    "spy on execution time; generate information on leaf nodes only
+     (which generates slightly less sampling overhead)
+     Return the value from aBlock."
 
-    |probing delay probingProcess probedProcess|
+    |probing delay probingProcess probedProcess retVal|
 
     theBlock := aBlock.
 
@@ -547,27 +562,31 @@
 
         [
             startTime := OperatingSystem getMillisecondTime.
-            self execute.
+            retVal := self execute.
         ] ensure:[
             probing := executing := false.
             theBlock := nil.
             endTime := OperatingSystem getMillisecondTime.
         ].
     ].
+    ^ retVal
 
     "Created: 20.3.1997 / 20:15:07 / cg"
     "Modified: 22.3.1997 / 16:46:42 / cg"
 !
 
 spyOn:aBlock interval:ms
-    "spy on execution time, generate a hierarchical call information"
+    "spy on execution time, generate a hierarchical call information on the output stream.
+     Return the value from aBlock."
 
-    |probing delay probingProcess probedProcess retVal|
+    |probing delay probingProcess probedProcess retVal runPrio probePrio|
 
     theBlock := aBlock.
+    runPrio := (Processor activePriority-1 "userInterruptPriority-1").
+    probePrio := (Processor activePriority"+1" "Processor userInterruptPriority+1").
 
     Processor activeProcess 
-        withPriority:(Processor userInterruptPriority-1) 
+        withPriority:runPrio 
         do:[
 
             probingProcess := [
@@ -575,14 +594,14 @@
 
                 p := probedProcess.
                 [probing] whileTrue:[
-                    delay wait.
+                    delay wait. 
                     executing ifTrue:[
                         self count:p suspendedContext
                     ]
                 ].
             ] newProcess.
 
-            probingProcess priority:(Processor userInterruptPriority+1).
+            probingProcess priority:probePrio.
 
             delay := (Delay forMilliseconds:ms).
             ntally := 0.
@@ -619,13 +638,13 @@
 !MessageTally class methodsFor:'documentation'!
 
 version
-    ^ '$Id: MessageTally.st 1909 2012-03-31 00:14:49Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/MessageTally.st,v 1.48 2012/11/04 21:09:17 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/MessageTally.st,v 1.46 2010/07/04 08:06:24 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic3/MessageTally.st,v 1.48 2012/11/04 21:09:17 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: MessageTally.st 1909 2012-03-31 00:14:49Z vranyj1 $'
+    ^ '$Id: MessageTally.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
--- a/MessageTracer.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/MessageTracer.st	Fri Nov 30 17:20:01 2012 +0000
@@ -36,7 +36,7 @@
 !
 
 MessageTracer subclass:#PrintingMessageTracer
-	instanceVariableNames:''
+	instanceVariableNames:'output'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:MessageTracer
@@ -62,7 +62,7 @@
 "
     This class provides a common home for the tracing
     facilities (originally, they where in Object, but have been moved to
-    allow easier separation of development vs. runtime configurations.
+    allow easier separation of development vs. runtime configurations).
 
     tracing execution of a block:
 
@@ -213,7 +213,7 @@
                                                                         [exEnd]
 
   trapping modifications to an objects instVars:
-									[exBegin]
+                                                                        [exBegin]
      |o|
 
      o := Point new.
@@ -223,7 +223,7 @@
      o x:1.
      o y:2.
      MessageTracer untrap:o
-									[exEnd]
+                                                                        [exEnd]
 
   trapping modifications of a particular instVar:
                                                                         [exBegin]
@@ -237,6 +237,11 @@
      o y:2.
      MessageTracer untrap:o
                                                                         [exEnd]
+  tracing during block execution:
+                                                                        [exBegin]
+     MessageTracer trace:[ 10 factorialR ]
+                                                                        [exEnd]
+
 "
 ! !
 
@@ -518,19 +523,46 @@
     "evaluate aBlock sending trace information to stdout.
      Return the value of the block."
 
-    ^ PrintingMessageTracer new trace:aBlock detail:false.
+     ^ self trace:aBlock on:Stderr
 
     "
      MessageTracer trace:[#(6 5 4 3 2 1) sort]
     "
 !
 
+trace:aBlock on:aStream
+    "evaluate aBlock sending trace information to stdout.
+     Return the value of the block."
+
+    ^ PrintingMessageTracer new 
+        output:aStream;
+        trace:aBlock detail:false.
+
+    "
+     MessageTracer trace:[#(6 5 4 3 2 1) sort] on:Transcript
+    "
+!
+
 traceFull:aBlock
     "evaluate aBlock sending trace information to stdout.
      Return the value of the block.
      The trace information is more detailed."
 
-     ^ PrintingMessageTracer new trace:aBlock detail:true.
+     ^ self traceFull:aBlock on:Stderr
+
+    "
+     MessageTracer traceFull:[#(6 5 4 3 2 1) sort]
+    "
+!
+
+traceFull:aBlock on:aStream
+    "evaluate aBlock sending trace information to stdout.
+     Return the value of the block.
+     The trace information is more detailed."
+
+     ^ PrintingMessageTracer new 
+        output:aStream;
+        trace:aBlock detail:true.
 
     "
      MessageTracer traceFull:[#(6 5 4 3 2 1) sort]
@@ -542,7 +574,21 @@
      Return the value of the block.
      The trace information is more detailed."
 
-     ^ PrintingMessageTracer new trace:aBlock detail:#fullIndent.
+     ^ self traceFullIndented:aBlock on:Stderr
+
+    "
+     MessageTracer traceFullIndented:[ #(6 5 4 3 2 1) sort ]
+    "
+!
+
+traceFullIndented:aBlock on:aStream
+    "evaluate aBlock sending trace information to stdout.
+     Return the value of the block.
+     The trace information is more detailed."
+
+     ^ PrintingMessageTracer new 
+        output:aStream;
+        trace:aBlock detail:#fullIndent.
 
     "
      MessageTracer traceFullIndented:[ #(6 5 4 3 2 1) sort ]
@@ -553,11 +599,24 @@
     "evaluate aBlock sending trace information to stdout.
      Return the value of the block."
 
-     ^ PrintingMessageTracer new trace:aBlock detail:#indent.
+     ^ self traceIndented:aBlock on:Stderr
 
     "
      MessageTracer traceIndented:[ #(6 5 4 3 2 1) sort ]
     "
+!
+
+traceIndented:aBlock on:aStream
+    "evaluate aBlock sending trace information to stdout.
+     Return the value of the block."
+
+     ^ PrintingMessageTracer new 
+        output:aStream;
+        trace:aBlock detail:#indent.
+
+    "
+     MessageTracer traceIndented:[ #(6 5 4 3 2 1) sort ] on:Transcript
+    "
 ! !
 
 !MessageTracer class methodsFor:'method breakpointing'!
@@ -798,7 +857,7 @@
 !MessageTracer class methodsFor:'method counting'!
 
 countMethod:aMethod
-    "arrange for a aMethods execution to be counted.
+    "arrange for a aMethod's execution to be counted.
      Use unwrapMethod to remove this."
 
     MethodCounts isNil ifTrue:[
@@ -812,6 +871,7 @@
 
                         cnt := MethodCounts at:aMethod ifAbsent:0.
                         MethodCounts at:aMethod put:(cnt + 1).
+                        MessageTracer changed:#statistics: with:aMethod.
                         aMethod changed:#statistics
                  ]
          onExit:[:con :retVal |
@@ -872,7 +932,7 @@
 !MessageTracer class methodsFor:'method memory usage'!
 
 countMemoryUsageOfMethod:aMethod
-    "arrange for aMethods memory usage to be counted.
+    "arrange for aMethod's memory usage to be counted.
      Use unwrapMethod to remove this."
 
     |oldPriority oldScavengeCount oldNewUsed|
@@ -911,6 +971,7 @@
                  MethodMemoryUsage at:aMethod put:(cnt + memUse).
              ].
              Processor activeProcess priority:oldPriority.
+             MessageTracer changed:#statistics: with:aMethod.
              aMethod changed:#statistics
          ]
          onUnwind:[
@@ -1047,7 +1108,7 @@
 !
 
 timeMethod:aMethod
-    "arrange for a aMethods execution time to be measured.
+    "arrange for a aMethod's execution time to be measured.
      Use unwrapMethod: or stopTimingMethod: to remove this."
 
     |t0|
@@ -1082,6 +1143,7 @@
                         ] ifFalse:[
                             info rememberExecutionTime:t.
                         ].
+                        MessageTracer changed:#statistics: with:aMethod.
                         aMethod changed:#statistics
                 ]
 
@@ -3120,16 +3182,23 @@
     "Created: / 05-03-2007 / 15:32:43 / cg"
 ! !
 
+!MessageTracer::PrintingMessageTracer methodsFor:'accessing'!
+
+output:something
+    output := something.
+! !
+
 !MessageTracer::PrintingMessageTracer methodsFor:'trace helpers'!
 
 stepInterrupt
     "called for every send while tracing"
 
-    |ignore sel con r|
+    |ignore sel con r outStream|
 
     StepInterruptPending := nil.
     con := thisContext sender.
     ignore := false.
+    outStream := output ? Stderr.
 
     con receiver == Processor ifTrue:[
         (sel := con selector) == #threadSwitch: ifTrue:[
@@ -3153,28 +3222,28 @@
                 [con notNil 
                 and:[(r := con receiver) ~~ self
                 and:[r ~~ tracedBlock]]] whileTrue:[
-                    '  ' printOn:Stderr.
+                    '  ' printOn:outStream.
                     con := con sender.
                 ].
                 con := thisContext sender.
-                self class printFull:con on:Stderr withSender:false.
+                self class printFull:con on:outStream withSender:false.
             ] ifFalse:[
                 traceDetail == #indent ifTrue:[
                     [con notNil 
                     and:[(r := con receiver) ~~ self
                     and:[r ~~ tracedBlock]]] whileTrue:[
-                        '  ' printOn:Stderr.
+                        '  ' printOn:outStream.
                         con := con sender.
                     ].
                     con := thisContext sender.
-                    con printOn:Stderr.
-                    Stderr cr.
+                    con printOn:outStream.
+                    outStream cr.
                 ] ifFalse:[
                     traceDetail == true ifTrue:[
-                        self class printFull:con on:Stderr withSender:true.
+                        self class printFull:con on:outStream withSender:true.
                     ] ifFalse:[    
-                        con printOn:Stderr.
-                        Stderr cr.
+                        con printOn:outStream.
+                        outStream cr.
                     ]
                 ]
             ].
@@ -3200,11 +3269,11 @@
 !MessageTracer class methodsFor:'documentation'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/MessageTracer.st,v 1.116 2012/05/21 08:16:17 stefan Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic3/MessageTracer.st,v 1.117 2012/11/05 23:09:21 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: MessageTracer.st 1925 2012-06-05 13:52:00Z vranyj1 $'
+    ^ '$Id: MessageTracer.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
 
 MessageTracer initialize!
--- a/MethodChange.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/MethodChange.st	Fri Nov 30 17:20:01 2012 +0000
@@ -73,12 +73,6 @@
     ^ self basicNew className:clsName selector:sel source:src category:cat
 ! !
 
-!MethodChange class methodsFor:'others'!
-
-version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/MethodChange.st,v 1.66 2012/07/31 12:24:31 vrany Exp §'
-! !
-
 !MethodChange methodsFor:'accessing'!
 
 category
@@ -420,7 +414,16 @@
     "Created: / 01-08-2012 / 16:33:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+isMethodChangeForExtensionsVersionMethod
+    "true if this is a change for an extensionsVersion method"
+
+    ^  self isMethodCodeChange
+    and:[ AbstractSourceCodeManager isExtensionsVersionMethodSelector:self selector ]
+!
+
 isMethodChangeForVersionMethod
+    "true if this is a change for a version method"
+
     ^  self isMethodCodeChange
     and:[ AbstractSourceCodeManager isVersionMethodSelector:self selector ]
 !
@@ -464,9 +467,13 @@
 !MethodChange class methodsFor:'documentation'!
 
 version
-    ^ '$Id: MethodChange.st 1957 2012-09-05 11:45:38Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/MethodChange.st,v 1.68 2012/10/30 14:25:11 cg Exp $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libbasic3/MethodChange.st,v 1.68 2012/10/30 14:25:11 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: MethodChange.st 1957 2012-09-05 11:45:38Z vranyj1 $'
+    ^ '$Id: MethodChange.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
--- a/MethodFinder.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/MethodFinder.st	Fri Nov 30 17:20:01 2012 +0000
@@ -1358,7 +1358,7 @@
                         strm nextPutAll: 'data', argMap first printString.
                         aSel keywords doWithIndex: [:key :ind |
                                 strm nextPutAll: ' ',key.
-                                (key last == $:) | (key first isLetter not)
+                                ((key last == $:) or:[ key first isLetter not ])
                                         ifTrue: [strm nextPutAll: ' data', 
                                                 (argMap at: ind+1) printString]]])].
 !
@@ -1461,7 +1461,7 @@
                                                 strm nextPutAll: 'data', argMap first printString.
                                                 aSel keywords doWithIndex: [:key :ind |
                                                         strm nextPutAll: ' ',key.
-                                                        (key last == $:) | (key first isLetter not)
+                                                        ((key last == $:) or:[ key first isLetter not])
                                                                 ifTrue: [strm nextPutAll: ' data', 
                                                                         (argMap at: ind+1) printString]]])
                                         ]]]]].
@@ -1630,13 +1630,13 @@
 !MethodFinder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/MethodFinder.st,v 1.30 2012/08/23 21:07:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/MethodFinder.st,v 1.31 2012/10/29 11:38:51 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/MethodFinder.st,v 1.30 2012/08/23 21:07:40 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic3/MethodFinder.st,v 1.31 2012/10/29 11:38:51 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: MethodFinder.st 1957 2012-09-05 11:45:38Z vranyj1 $'
+    ^ '$Id: MethodFinder.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
--- a/PerforceSourceCodeManager.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/PerforceSourceCodeManager.st	Fri Nov 30 17:20:01 2012 +0000
@@ -16,7 +16,7 @@
 	classVariableNames:'PerforceExecutable PerforceModuleRoots PerforceClient
 		PerforcePort PerforceUser PerforcePassword PerforceTempDir
 		Verbose PerforceCommandSemaphore PerforceEnabled
-		ShownInBrowserMenus PerforceWorkspaces'
+		PerforceWorkspaces'
 	poolDictionaries:''
 	category:'System-SourceCodeManagement'
 !
@@ -248,18 +248,6 @@
     "Modified: / 01-06-2012 / 11:06:24 / cg"
 !
 
-shownInBrowserMenus
-    ^ ShownInBrowserMenus ? true
-
-    "Created: / 08-01-2012 / 19:53:20 / cg"
-!
-
-shownInBrowserMenus:aBoolean
-    ShownInBrowserMenus := aBoolean
-
-    "Created: / 08-01-2012 / 19:53:34 / cg"
-!
-
 utilities
     "Returns 'utilities' object that can be used by tools. 
 
@@ -1881,7 +1869,7 @@
      Timestamp now printOn:s format:'%h-%m-%s.%i'.
      versionInfo time:s contents.
      PerforceVersionInfo fromRCSString:versionInfo getVersionString.
-     PerforceVersionInfo fromRCSString:'$Header: /cvs/stx/stx/libbasic3/PerforceSourceCodeManager.st,v 1.28 2012/09/26 16:32:02 cg Exp $'
+     PerforceVersionInfo fromRCSString:'$Header: /cvs/stx/stx/libbasic3/PerforceSourceCodeManager.st,v 1.29 2012/11/02 10:25:27 cg Exp $'
     "
 
     "Modified: / 01-06-2012 / 13:32:40 / cg"
@@ -1982,13 +1970,13 @@
 !PerforceSourceCodeManager class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/PerforceSourceCodeManager.st,v 1.28 2012/09/26 16:32:02 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/PerforceSourceCodeManager.st,v 1.29 2012/11/02 10:25:27 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/PerforceSourceCodeManager.st,v 1.28 2012/09/26 16:32:02 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic3/PerforceSourceCodeManager.st,v 1.29 2012/11/02 10:25:27 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: PerforceSourceCodeManager.st 1971 2012-09-27 19:37:25Z vranyj1 $'
+    ^ '$Id: PerforceSourceCodeManager.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
--- a/ProjectChecker.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/ProjectChecker.st	Fri Nov 30 17:20:01 2012 +0000
@@ -93,6 +93,12 @@
     "Created: / 11-01-2012 / 16:46:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!ProjectChecker class methodsFor:'others'!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libbasic3/ProjectChecker.st,v 1.12 2012/11/07 16:49:29 cg Exp §'
+! !
+
 !ProjectChecker methodsFor:'accessing'!
 
 classes: aCollection
@@ -462,11 +468,13 @@
 !ProjectChecker methodsFor:'checks-private'!
 
 checkClasses
+    |myPackage|
 
     classes notNil ifTrue:[
         self checkClasses: classes
     ] ifFalse:[
-        self checkClasses: (Smalltalk allClasses select:[:cls | (cls package = self package)]).
+        myPackage := self package.
+        self checkClasses: (Smalltalk allClasses select:[:cls | (cls package = myPackage)]).
     ].
 
     "Created: / 11-01-2012 / 16:55:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -560,13 +568,9 @@
 !ProjectChecker class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ProjectChecker.st 1979 2012-11-18 19:46:19Z vranyj1 $'
-!
-
-version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/ProjectChecker.st,v 1.11 2012-10-31 17:42:25 +0000 vrany Exp §'
+    ^ '$Header: /cvs/stx/stx/libbasic3/ProjectChecker.st,v 1.12 2012/11/07 16:49:29 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: ProjectChecker.st 1979 2012-11-18 19:46:19Z vranyj1 $'
+    ^ '$Id: ProjectChecker.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
--- a/SourceCodeManagerUtilities.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/SourceCodeManagerUtilities.st	Fri Nov 30 17:20:01 2012 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 2000 eXept Software AG
-	      All Rights Reserved
+              All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -24,7 +24,7 @@
 copyright
 "
  COPYRIGHT (c) 2000 eXept Software AG
-	      All Rights Reserved
+              All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -42,7 +42,7 @@
     (extracted from the browser)
 
     [author:]
-	Claus Gittinger (cg@exept)
+        Claus Gittinger (cg@exept)
 
     [see also:]
 
@@ -64,7 +64,9 @@
 new
     "return an initialized instance"
 
-    self == SourceCodeManagerUtilities ifTrue:[ self error:'trying to instatiate abstract class' ].
+    self == SourceCodeManagerUtilities ifTrue:[ 
+        self abstractClassInstantiationError
+    ].
     ^ self basicNew initialize.
 
     "Modified: / 25-07-2012 / 17:10:55 / cg"
@@ -74,14 +76,14 @@
 
 yesToAllNotification
     YesToAllNotification isNil ifTrue:[
-	YesToAllNotification := QuerySignal new.
+        YesToAllNotification := QuerySignal new.
     ].
     ^ YesToAllNotification
 !
 
 yesToAllQuery
     YesToAllQuery isNil ifTrue:[
-	YesToAllQuery := QuerySignal new.
+        YesToAllQuery := QuerySignal new.
     ].
     ^ YesToAllQuery
 ! !
@@ -126,13 +128,13 @@
 doesNotUnderstand: aMessage
 
     (self default respondsTo: aMessage selector) ifTrue:[
-	"Bad, method moved to instance side but not forwarded"
-	self breakPoint: #jv.
-	self breakPoint: #cg.
-
-	^aMessage sendTo: self default
+        "Bad, method moved to instance side but not forwarded"
+        self breakPoint: #jv.
+        self breakPoint: #cg.
+
+        ^aMessage sendTo: self default
     ] ifFalse:[
-	^super doesNotUnderstand: aMessage
+        ^super doesNotUnderstand: aMessage
     ]
 
     "Created: / 10-10-2011 / 14:04:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -145,17 +147,17 @@
     "Utility method"
 
     "
-	SourceCodeManagerUtilities compileForwarders.
+        SourceCodeManagerUtilities compileForwarders.
     "
 
     self methodsDo:[:m|
-	| sel |
-	sel := m selector.
-	((self class includesSelector: sel) and: [(self class >> sel) source = m source]) ifTrue:[
-	    | source header |
-
-	    header := m source asStringCollection first.
-	    source := '%1
+        | sel |
+        sel := m selector.
+        ((self class includesSelector: sel) and: [(self class >> sel) source = m source]) ifTrue:[
+            | source header |
+
+            header := m source asStringCollection first.
+            source := '%1
 
     <resource: #obsolete>
 
@@ -163,10 +165,10 @@
 
     ^self default %1' bindWith: header with: header.
 
-	    self halt: 'Inspect source'.
-	    self class compile: source classified: m category.
-	].
-
+            self halt: 'Inspect source'.
+            self class compile: source classified: m category.    
+        ].
+            
     ]
 
     "Created: / 11-10-2011 / 10:55:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -221,27 +223,12 @@
 !
 
 sourceCodeManagerFor:aClass
-    |mgr assumption|
-
-    mgr := aClass theNonMetaclass sourceCodeManager.
-    mgr isNil ifTrue:[
-        SourceCodeManager isNil ifTrue:[
-            (self warn:'SourceCodeManagement is disabled or not configured.\\Please setup in the Launcher.' withCRs) ifFalse:[
-                ^ nil
-            ].
-        ].
-        assumption := AbstractSourceCodeManager defaultManager ? CVSSourceCodeManager.
-        assumption notNil ifTrue:[
-            (self confirm:('Class does not seem to provide a valid sourceCodeManager.\\Assume %1 ?' bindWith:assumption managerTypeName) withCRs) ifFalse:[
-                ^ nil
-            ].
-            mgr := assumption.
-        ].
-    ].
-    ^ mgr
-
-    "Modified: / 19-04-2011 / 11:48:41 / cg"
-    "Modified: / 27-07-2012 / 13:14:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+
+    <resource: #obsolete>
+
+    self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+    ^self default sourceCodeManagerFor:aClass
 !
 
 sourceCodeOfClass:aClass
@@ -281,11 +268,11 @@
 
     self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
 
-    ^self default
-	changeSetForExtensionMethodsForPackage:packageToCheckOut
-	revision:revisionOrNil
-	orAskForRevision:askForRevision
-	usingManager:aSourceCodeManager
+    ^self default 
+        changeSetForExtensionMethodsForPackage:packageToCheckOut 
+        revision:revisionOrNil 
+        orAskForRevision:askForRevision 
+        usingManager:aSourceCodeManager
 
     "Created: / 29-12-2011 / 14:28:14 / cg"
 !
@@ -631,18 +618,18 @@
 !
 
 getCheckinInfoFor:aClassNameOrPackageNameString initialAnswer:initialAnswerOrNil
-    ^self default
-	getCheckinInfoFor:aClassNameOrPackageNameString
-	initialAnswer:initialAnswerOrNil
+    ^self default 
+        getCheckinInfoFor:aClassNameOrPackageNameString     
+        initialAnswer:initialAnswerOrNil
 
     "Modified: / 12-03-2012 / 12:56:45 / cg"
 !
 
 getCheckinInfoFor:aClassNameOrPackageNameString initialAnswer:initialAnswerOrNil withQuickOption:withQuickOption
-    ^self default
-	getCheckinInfoFor:aClassNameOrPackageNameString
-	initialAnswer:initialAnswerOrNil
-	withQuickOption:withQuickOption
+    ^self default 
+        getCheckinInfoFor:aClassNameOrPackageNameString 
+        initialAnswer:initialAnswerOrNil 
+        withQuickOption:withQuickOption
 
     "Modified: / 12-03-2012 / 12:56:50 / cg"
 !
@@ -693,12 +680,12 @@
 
 lastSourceLogMessageHeadlines
     LastSourceLogMessage isNil ifTrue:[
-	LastSourceLogMessages := OrderedCollection new.
+        LastSourceLogMessages := OrderedCollection new.
     ].
-    ^ LastSourceLogMessages
-	collect:[:msg |
-	    msg withoutLeadingSeparators asCollectionOfLines first , '...'
-	]
+    ^ LastSourceLogMessages 
+        collect:[:msg |
+            msg withoutLeadingSeparators asCollectionOfLines first , '...'
+        ]
 
     "Created: / 12-03-2012 / 12:34:35 / cg"
 !
@@ -722,13 +709,13 @@
 doesNotUnderstand: aMessage
 
     (self class respondsTo: aMessage selector) ifTrue:[
-	"Bad, method is not moved the the instance side"
-	self breakPoint: #jv.
-	self breakPoint: #cg.
-
-	^aMessage sendTo: self class
+        "Bad, method is not moved the the instance side"
+        self breakPoint: #jv.
+        self breakPoint: #cg.
+
+        ^aMessage sendTo: self class
     ] ifFalse:[
-	^super doesNotUnderstand: aMessage
+        ^super doesNotUnderstand: aMessage
     ]
 
     "Created: / 10-10-2011 / 14:02:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -748,9 +735,9 @@
 
     manager := aSourceCodeManager.
     manager isContainerBased ifFalse:[
-	confirmNewFiles isNil "not yet set by user" ifTrue:[
-	    confirmNewFiles := false.
-	]
+        confirmNewFiles isNil "not yet set by user" ifTrue:[
+            confirmNewFiles := false.
+        ]
     ].
 
     "Created: / 10-10-2011 / 11:47:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -764,7 +751,7 @@
 
     info := mgr sourceInfoOfClass:aClass.
 
-    ^ (info isNil
+    ^ (info isNil 
     or:[(info at:#fileName ifAbsent:nil) isNil
     or:[(info at:#module ifAbsent:nil) isNil
     or:[(info at:#directory ifAbsent:nil) isNil]]])
@@ -789,17 +776,17 @@
 
     anyChange := false.
     aClass withAllPrivateClassesDo:[:eachClass |
-	anyChangeHere := false.
-	eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
-	    mthd package ~= aPackage ifTrue:[
-		mthd setPackage:aPackage.
-		anyChangeHere := true.
-	    ].
-	].
-	anyChangeHere ifTrue:[
-	    eachClass changed:#projectOrganization
-	].
-	anyChangeHere ifTrue:[anyChange := true].
+        anyChangeHere := false.
+        eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd | 
+            mthd package ~= aPackage ifTrue:[
+                mthd setPackage:aPackage.
+                anyChangeHere := true.
+            ].
+        ].
+        anyChangeHere ifTrue:[
+            eachClass changed:#projectOrganization
+        ].
+        anyChangeHere ifTrue:[anyChange := true].
     ].
     anyChange ifTrue:[
        Smalltalk changed:#projectOrganization
@@ -811,12 +798,12 @@
     "make all methods belong to the classes project"
 
     aChangeSet do:[:eachChange |
-	eachChange isMethodCodeChange ifTrue:[
-	    eachChange changeMethod package ~= aPackage ifTrue:[
-		Transcript showCR:'change package of ',eachChange changeMethod whoString.
-		eachChange changeMethod setPackage:aPackage.
-	    ]
-	]
+        eachChange isMethodCodeChange ifTrue:[
+            eachChange changeMethod package ~= aPackage ifTrue:[
+                Transcript showCR:'change package of ',eachChange changeMethod whoString.
+                eachChange changeMethod setPackage:aPackage.        
+            ]
+        ]
     ].
 !
 
@@ -831,42 +818,42 @@
 
     "/ don't write a timestamp. Otherwise we would always generate a new version, even if nothing changed
     "/ s nextPutAll:(Smalltalk timeStamp).
-    "/ s nextPutChunkSeparator.
+    "/ s nextPutChunkSeparator. 
     "/ s cr; cr.
 
     "/ sort them by name (to avoid conflicts due to SCM merge)
     methodsSortedByName := aCollectionOfMethods asOrderedCollection.
     methodsSortedByName sort:[:a :b |
-				|clsA clsB|
-
-				clsA := a mclass name.
-				clsB := b mclass name.
-				clsA < clsB ifTrue:[
-				    true
-				] ifFalse:[
-				    clsA > clsB ifTrue:[
-					false
-				    ] ifFalse:[
-					a selector < b selector
-				    ]
-				]
-			      ].
+                                |clsA clsB|
+
+                                clsA := a mclass name.
+                                clsB := b mclass name.
+                                clsA < clsB ifTrue:[
+                                    true
+                                ] ifFalse:[
+                                    clsA > clsB ifTrue:[
+                                        false
+                                    ] ifFalse:[
+                                        a selector < b selector
+                                    ]
+                                ]
+                              ].
     methodsSortedByName do:[:aMethod |
-	aMethod mclass fileOutMethod:aMethod on:s.
-	s cr.
+        aMethod mclass fileOutMethod:aMethod on:s.
+        s cr.
     ].
 
     defClass := ProjectDefinition definitionClassForPackage:aPackageID.
     defClass notNil ifTrue:[
-	"/ make sure, an extensionVersion_XXX method is included...
-	"/ (notice: no need to support a secondary backward compatible non-manager related version method here)
-	(methodsSortedByName contains:[:aMethod | aMethod selector == scmManager nameOfVersionMethodForExtensions]) ifFalse:[
-	    s nextPutLine:('!!%1 class methodsFor:''documentation''!!' bindWith:defClass name).
-	    s cr.
-	    s nextChunkPut:
-		(scmManager versionMethodTemplateForSmalltalkFor:(scmManager nameOfVersionMethodForExtensions)).
-	    s space; nextPutChunkSeparator.
-	].
+        "/ make sure, an extensionVersion_XXX method is included...
+        "/ (notice: no need to support a secondary backward compatible non-manager related version method here)
+        (methodsSortedByName contains:[:aMethod | aMethod selector == scmManager nameOfVersionMethodForExtensions]) ifFalse:[
+            s nextPutLine:('!!%1 class methodsFor:''documentation''!!' bindWith:defClass name).
+            s cr.
+            s nextChunkPut:
+                (scmManager versionMethodTemplateForSmalltalkFor:(scmManager nameOfVersionMethodForExtensions)).
+            s space; nextPutChunkSeparator.
+        ].
     ].
 
     ^ s contents.
@@ -874,14 +861,30 @@
     "Created: / 25-07-2012 / 18:38:05 / cg"
 !
 
-sourceCodeManagerFor: aClass
-    ^manager notNil ifTrue:[ 
-        manager
-    ] ifFalse:[
-        self class sourceCodeManagerFor:aClass
-    ]
-
-    "Modified: / 27-07-2012 / 13:14:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+sourceCodeManagerFor:aClass
+    |mgr assumption|
+
+    manager notNil ifTrue:[^manager].
+
+    mgr := aClass theNonMetaclass sourceCodeManager.
+    mgr isNil ifTrue:[
+        SourceCodeManager isNil ifTrue:[
+            (self warn:'SourceCodeManagement is disabled or not configured.\\Please setup in the Launcher.' withCRs) ifFalse:[
+                ^ nil
+            ].
+        ].
+        assumption := AbstractSourceCodeManager defaultManager ? CVSSourceCodeManager.
+        assumption notNil ifTrue:[
+            (self confirm:('Class does not seem to provide a valid sourceCodeManager.\\Assume %1 ?' bindWith:assumption managerTypeName) withCRs) ifFalse:[
+                ^ nil
+            ].
+            mgr := assumption.
+        ].
+    ].
+    ^ mgr
+
+    "Modified: / 19-04-2011 / 11:48:41 / cg"
+    "Modified: / 10-10-2011 / 11:47:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 sourceCodeOfClass:aClass
@@ -903,10 +906,10 @@
     i1 := a indexOf:$. .
     i2 := b indexOf:$. .
     i1 == 0 ifTrue:[
-	i1 := a size + 1.
+        i1 := a size + 1.
     ].
     i2 == 0 ifTrue:[
-	i2 := b size + 1.
+        i2 := b size + 1.
     ].
 
     a1 := Integer readFrom:(a copyTo:i1-1).
@@ -916,10 +919,10 @@
     rest1 := (a copyFrom:i1+1).
     rest2 := (b copyFrom:i2+1).
     rest1 isEmpty ifTrue:[
-	^ rest2 notEmpty
+        ^ rest2 notEmpty
     ].
     rest2 isEmpty ifTrue:[
-	^ false
+        ^ false
     ].
     ^ self versionString:rest1 isLessThan:rest2
 
@@ -949,9 +952,9 @@
      Return a changeSet or nil (if any error occurred)"
 
     ^ self
-	changeSetForExtensionMethodsForPackage:packageToCheckOut
-	revision:nil orAskForRevision:askForRevision
-	usingManager:aSourceCodeManager
+        changeSetForExtensionMethodsForPackage:packageToCheckOut 
+        revision:nil orAskForRevision:askForRevision 
+        usingManager:aSourceCodeManager
 
     "Created: / 29-12-2011 / 14:26:01 / cg"
 !
@@ -961,9 +964,7 @@
      If askForRevision is false, check-out the newest version.
      Return a changeSet or nil (if any error occurred)"
 
-    |resources directory module file aStream sourceToLoad rev msg newestRev |
-
-    resources := self classResources.
+    |directory module file aStream sourceToLoad rev msg newestRev |
 
     directory := packageToCheckOut asPackageId directory.
     module := packageToCheckOut asPackageId module.
@@ -973,51 +974,51 @@
     "/ ask for revision
     "/
     (rev := revisionOrNil) isNil ifTrue:[
-	newestRev := aSourceCodeManager newestRevisionInFile:file directory:directory module:module.
-	askForRevision ifFalse:[
-	    rev := newestRev ? ''
-	] ifTrue:[
-	    msg := resources string:'CheckOut which revision of extensions for ''%1'': (empty for newest)' with:packageToCheckOut allBold.
-	    newestRev notNil ifTrue:[
-		msg := msg , '\' , (resources string:'Newest in reporitory is %1.' with:newestRev)
-	    ].
-
-	    rev := self
-		    askForExistingRevision:msg
-		    title:'CheckOut from repository'
-		    class:nil
-		    manager:aSourceCodeManager
-		    module:module package:directory fileName:file.
-
-	    rev isNil ifTrue:[
-		^ nil   "/ canceled
-	    ].
-	].
+        newestRev := aSourceCodeManager newestRevisionInFile:file directory:directory module:module.
+        askForRevision ifFalse:[
+            rev := newestRev ? ''
+        ] ifTrue:[
+            msg := resources string:'CheckOut which revision of extensions for ''%1'': (empty for newest)' with:packageToCheckOut allBold.
+            newestRev notNil ifTrue:[
+                msg := msg , '\' , (resources string:'Newest in reporitory is %1.' with:newestRev)
+            ].
+
+            rev := self
+                    askForExistingRevision:msg 
+                    title:'CheckOut from repository' 
+                    class:nil 
+                    manager:aSourceCodeManager 
+                    module:module package:directory fileName:file.
+
+            rev isNil ifTrue:[
+                ^ nil   "/ canceled
+            ].
+        ].
     ].
     rev withoutSpaces isEmpty ifTrue:[
-	rev := #newest.
-	msg := 'extracting newest %1 (' , (newestRev ? '???') , ')'.
+        rev := #newest.
+        msg := 'extracting newest %1 (' , (newestRev ? '???') , ')'.
     ] ifFalse:[
-	msg := 'extracting previous %1'.
+        msg := 'extracting previous %1'.
     ].
-    aStream := aSourceCodeManager
-	streamForClass:nil
-	fileName:file
-	revision:rev
-	directory:directory
-	module:module
-	cache:true.
+    aStream := aSourceCodeManager  
+        streamForClass:nil
+        fileName:file 
+        revision:rev 
+        directory:directory 
+        module:module
+        cache:true.
 
     aStream isNil ifTrue:[
-	self warn:(resources string:'Could not extract "extensions.st" for %1 from repository' with:packageToCheckOut allBold).
-	^ nil
+        self warn:(resources string:'Could not extract "extensions.st" for %1 from repository' with:packageToCheckOut allBold).
+        ^ nil
     ].
     aStream class readErrorSignal handle:[:ex |
-	self warn:('read error while reading extracted source\\' , ex description) withCRs.
-	aStream close.
-	^ nil
+        self warn:('read error while reading extracted source\\' , ex description) withCRs.
+        aStream close.
+        ^ nil
     ] do:[
-	sourceToLoad := aStream contents asString.
+        sourceToLoad := aStream contents asString.
     ].
     aStream close.
     ^ ChangeSet fromStream:(sourceToLoad readStream).
@@ -1026,9 +1027,8 @@
 !
 
 checkForExistingModule:module directory:directory container:containerFileName usingManager:mgr allowCreate:allowCreate
-    |resources moduleName directoryName containerName|
-
-    resources := self classResources.
+    |moduleName directoryName containerName|
+
     moduleName := module allBold.
     directoryName := directory allBold.
     containerName := containerFileName allBold.
@@ -1037,23 +1037,23 @@
     "/ check for the container
     "/
     (mgr checkForExistingContainer:containerFileName inModule:module directory:directory) ifFalse:[
-	allowCreate ifFalse:[
-	    self warn:(resources string:'A container for ''%1'' does not exist in ''%2:%3'''
-				   with:containerName with:moduleName with:directoryName) withCRs.
-	    ^ false
-	].
-	(Dialog
-	    confirm:(resources string:'''%1'' is a new container (in ''%2:%3'').\\Create it ?'
-				 with:containerName with:moduleName with:directoryName) withCRs
-	    noLabel:'Cancel')
-	ifFalse:[
-	    ^ false.
-	].
-	(mgr createContainerForText:'' inModule:module package:directory container:containerFileName) ifFalse:[
-	    self warn:(resources string:'Cannot create new container: ''%1'' (in ''%2:%3'')'
-				 with:containerName with:moduleName with:directoryName).
-	    ^ false.
-	]
+        allowCreate ifFalse:[
+            self warn:(resources string:'A container for ''%1'' does not exist in ''%2:%3''' 
+                                   with:containerName with:moduleName with:directoryName) withCRs.
+            ^ false
+        ].
+        (Dialog 
+            confirm:(resources string:'''%1'' is a new container (in ''%2:%3'').\\Create it ?' 
+                                 with:containerName with:moduleName with:directoryName) withCRs
+            noLabel:'Cancel') 
+        ifFalse:[
+            ^ false.
+        ].
+        (mgr createContainerForText:'' inModule:module package:directory container:containerFileName) ifFalse:[
+            self warn:(resources string:'Cannot create new container: ''%1'' (in ''%2:%3'')' 
+                                 with:containerName with:moduleName with:directoryName).
+            ^ false.
+        ]
     ].
     ^ true.
 
@@ -1062,9 +1062,8 @@
 !
 
 checkForExistingModule:module directory:directory usingManager:mgr allowCreate:allowCreate
-    |resources moduleNameBold directoryNameBold|
-
-    resources := self classResources.
+    |moduleNameBold directoryNameBold|
+
     moduleNameBold := module allBold.
     directoryNameBold := directory allBold.
 
@@ -1072,27 +1071,27 @@
     "/ check for the directory
     "/
     (mgr checkForExistingModule:module directory:directory) ifFalse:[
-	allowCreate ifFalse:[
-	    self warn:(resources string:'A directory for ''%1'' does not exist in module ''%2'''
-				   with:directoryNameBold with:moduleNameBold) withCRs.
-	    ^ false
-	].
-	(Dialog
-	    confirm:(resources stringWithCRs:'''%1'' is a new directory in module ''%2''.\\Create it in %3?'
-				with:directoryNameBold
-				with:moduleNameBold
-				with:mgr managerTypeName)
-	    noLabel:'Cancel')
-	ifFalse:[
-	    ^ false.
-	].
-	(mgr createModule:module directory:directory) ifFalse:[
-	    self warn:(resources stringWithCRs:'Cannot create new directory: ''%1'' in module ''%2'' in %3'
-				 with:directoryNameBold
-				 with:moduleNameBold
-				 with:mgr managerTypeName).
-	    ^ false.
-	]
+        allowCreate ifFalse:[
+            self warn:(resources string:'A directory for ''%1'' does not exist in module ''%2''' 
+                                   with:directoryNameBold with:moduleNameBold) withCRs.
+            ^ false
+        ].
+        (Dialog 
+            confirm:(resources stringWithCRs:'''%1'' is a new directory in module ''%2''.\\Create it in %3?' 
+                                with:directoryNameBold 
+                                with:moduleNameBold
+                                with:mgr managerTypeName)
+            noLabel:'Cancel') 
+        ifFalse:[
+            ^ false.
+        ].
+        (mgr createModule:module directory:directory) ifFalse:[
+            self warn:(resources stringWithCRs:'Cannot create new directory: ''%1'' in module ''%2'' in %3' 
+                                 with:directoryNameBold 
+                                 with:moduleNameBold
+                                 with:mgr managerTypeName).
+            ^ false.
+        ]
     ].
     ^ true.
 
@@ -1101,33 +1100,32 @@
 !
 
 checkForExistingModule:module usingManager:mgr allowCreate:allowCreate
-    |resources moduleName answer|
+    |moduleName answer|
 
     (mgr checkForExistingModule:module) ifFalse:[
-	resources := self classResources.
-	moduleName := module allBold.
-
-	allowCreate ifFalse:[
-	    self warn:(resources stringWithCRs:'A module named ''%1'' does not exist in the repository'
-				  with:moduleName) .
-	    ^ false
-	].
-	AbortAllOperationWantedQuery query ifTrue:[
-	    answer := Dialog
-		confirmWithCancel:(resources stringWithCRs:'''%1'' is a new module.\\create it ?' with:moduleName)
-		labels:(resources array:#('Cancel All' 'Cancel' 'Yes' )).
-	    answer isNil ifTrue:[ AbortAllOperationRequest raise ].
-	] ifFalse:[
-	    answer := Dialog
-		confirm:(resources stringWithCRs:'''%1'' is a new module in %2.\\create it ?' with:moduleName with:mgr managerTypeName)
-		noLabel:'Cancel'
-	].
-	answer ifFalse:[ ^ false].
-
-	(mgr createModule:module) ifFalse:[
-	    self warn:(resources stringWithCRs:'Cannot create new module: ''%1'' in %2' with:moduleName with:mgr managerTypeName) .
-	    ^ false.
-	]
+        moduleName := module allBold.
+
+        allowCreate ifFalse:[
+            self warn:(resources stringWithCRs:'A module named ''%1'' does not exist in the repository' 
+                                  with:moduleName) .
+            ^ false
+        ].
+        AbortAllOperationWantedQuery query ifTrue:[
+            answer := Dialog 
+                confirmWithCancel:(resources stringWithCRs:'''%1'' is a new module.\\create it ?' with:moduleName)
+                labels:(resources array:#('Cancel All' 'Cancel' 'Yes' )).
+            answer isNil ifTrue:[ AbortAllOperationRequest raise ].
+        ] ifFalse:[
+            answer := Dialog 
+                confirm:(resources stringWithCRs:'''%1'' is a new module in %2.\\create it ?' with:moduleName with:mgr managerTypeName) 
+                noLabel:'Cancel'
+        ].
+        answer ifFalse:[ ^ false].
+
+        (mgr createModule:module) ifFalse:[
+            self warn:(resources stringWithCRs:'Cannot create new module: ''%1'' in %2' with:moduleName with:mgr managerTypeName) .
+            ^ false.
+        ]
     ].
     ^ true.
 
@@ -1135,102 +1133,13 @@
     "Created: / 29-12-2011 / 14:35:06 / cg"
 !
 
-checkinExtensionMethods:aCollectionOfMethods forPackage:aPackageID withInfo:aLogInfoOrStringOrNil
-    "checkin a projects extensions into the source repository.
-     If the argument, aLogInfoOrStringOrNil isNil, ask interactively for log-message."
-
-    |logMessage checkinInfo mgr pri module directory containerFileName methodSource|
-
-    resources := self classResources.
-
-    "/ the following is wrong - must ask the projectDefinition !!
-    aPackageID asPackageId projectDefinitionClass notNil ifTrue:[
-	mgr := self sourceCodeManagerFor:aPackageID asPackageId projectDefinitionClass.
-    ] ifFalse:[
-	mgr := self sourceCodeManagerFor:aCollectionOfMethods first mclass.
-    ].
-    mgr isNil ifTrue:[ ^ false ].
-
-    module := aPackageID asPackageId module.
-    directory := aPackageID asPackageId directory.
-    containerFileName := self nameOfExtensionsContainer.
-
-    aLogInfoOrStringOrNil isNil ifTrue:[
-	checkinInfo := self getCheckinInfoFor:containerFileName allBold initialAnswer:nil.
-	checkinInfo isNil ifTrue:[^ false].
-	logMessage := checkinInfo logMessage.
-    ] ifFalse:[
-	aLogInfoOrStringOrNil isString ifTrue:[
-	    logMessage := aLogInfoOrStringOrNil
-	] ifFalse:[
-	    checkinInfo := aLogInfoOrStringOrNil.
-	    logMessage := checkinInfo logMessage.
-	].
-    ].
-
-    (mgr checkForExistingContainer:containerFileName inModule:module directory:directory) ifFalse:[
-	(self checkForExistingModule:module usingManager:mgr allowCreate:true) ifFalse:[^ false].
-	LastModule := module.
-
-	(self checkForExistingModule:module directory:directory usingManager:mgr allowCreate:true) ifFalse:[^ false].
-	LastPackage := directory.
-
-	(self checkForExistingModule:module directory:directory container:containerFileName usingManager:mgr allowCreate:true) ifFalse:[^ false].
-    ].
-
-    self activityNotification:(resources string:'Checking in %1' with:containerFileName).
-    pri := Processor activePriority.
-    Processor activeProcess
-	withPriority:pri-1 to:pri
-	do:[
-	    methodSource := String streamContents: [:s|mgr fileOutSourceCodeExtensions: aCollectionOfMethods package: aPackageID on: s]
-.
-	    UserInformation handle:[:ex |
-		Transcript showCR:ex description.
-		ex proceed.
-	    ] do:[
-		Transcript showCR:('checking in ',containerFileName,' ...').
-		(mgr
-		    checkin:containerFileName
-		    text:methodSource
-		    directory:directory
-		    module:module
-		    logMessage:logMessage
-		    force:false)
-		ifFalse:[
-		    Transcript showCR:'Checkin of ''' , containerFileName , ''' failed'.
-		    self warn:'Checkin of ''' , containerFileName allBold , ''' failed'.
-		    ^ false.
-		].
-		checkinInfo notNil ifTrue:[
-		    |path|
-
-		    path := (module, '/', directory, '/', containerFileName).
-		    checkinInfo isStable ifTrue:[
-			"set stable tag for class that has been checked in"
-			self tagPath:path as:#stable usingManager:mgr.
-		    ].
-		    checkinInfo tagIt ifTrue:[
-			"set an additional tag for class that has been checked in"
-			self tagPath:path as:(checkinInfo tag) usingManager:mgr.
-		    ].
-		].
-		mgr postCheckInExtensionsForPackage:aPackageID
-	    ].
-	].
-    ^ true
-
-    "Modified: / 29-12-2011 / 14:32:11 / cg"
-    "Modified: / 02-02-2012 / 15:32:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
 checkoutClass:aClass askForMerge:askForMerge
     "check-out a class from the source repository."
 
     self
-	checkoutClass:aClass
-	askForRevision:true
-	askForMerge:askForMerge
+        checkoutClass:aClass 
+        askForRevision:true
+        askForMerge:askForMerge
 !
 
 checkoutClass:aClass askForRevision:askForRevision askForMerge:askForMerge
@@ -1238,102 +1147,100 @@
      If askForRevision is false, check-out the newest version."
 
     self
-	checkoutClass:aClass askForRevision:askForRevision askForMerge:askForMerge
-	askForConfirmation:true
+        checkoutClass:aClass askForRevision:askForRevision askForMerge:askForMerge 
+        askForConfirmation:true
 !
 
 checkoutClass:aClass askForRevision:askForRevision askForMerge:askForMerge askForConfirmation:askForConfirmation
     "check-out a class from the source repository.
      If askForRevision is false, check-out the newest version."
 
-    |mgr resources sourceInfo
+    |mgr sourceInfo
      currentClass inChangeSet
      aStream sourceToLoad currentSource rev revString
      nm msg rev2 newestRev
      containerModule containerPackage containerFile rslt
-     pkg listHere listRep diffSet
+     pkg listHere listRep diffSet 
      changed onlyHere onlyInRep answer labels values singleChangeSelector
      changedClasses default versionMethodsHere versionMethodsRep changedClassDefinitions
      wasInChangeSetBefore|
 
     aClass isNil ifTrue:[self error:'nil class'].
 
-    resources := self classResources.
-
     currentClass := aClass theNonMetaclass.
 
     nm := currentClass name.
     mgr := self sourceCodeManagerFor:currentClass.
     mgr isNil ifTrue:[
-	^ self
+        ^ self
     ].
 
     sourceInfo := mgr sourceInfoOfClass:currentClass.
     sourceInfo notNil ifTrue:[
-	currentClass package ~= PackageId noProjectID ifTrue:[
-	    containerPackage := mgr directoryFromSourceInfo:sourceInfo.
-	    containerModule := mgr moduleFromSourceInfo:sourceInfo.
-	].
-	containerFile := mgr containerFromSourceInfo:sourceInfo.
+        currentClass package ~= PackageId noProjectID ifTrue:[
+            containerPackage := mgr directoryFromSourceInfo:sourceInfo.
+            containerModule := mgr moduleFromSourceInfo:sourceInfo.
+        ].
+        containerFile := mgr containerFromSourceInfo:sourceInfo.
     ].
 
     currentClass isLoaded ifTrue:[
-	rev := currentClass binaryRevision.
-	rev2 := currentClass revision.
-	rev isNil ifTrue:[
-	    rev := rev2
-	].
-	rev isNil ifTrue:[
-	    pkg := currentClass package.
-	    (pkg notNil and:[pkg ~= PackageId noProjectID]) ifTrue:[
-		containerModule := pkg upTo:$:.
-		containerPackage := pkg copyFrom:(containerModule size + 2).
-	    ].
-	    containerModule size == 0 ifTrue:[
-		containerModule := (self class lastModule ) ? Project current repositoryModule.
-	    ].
-	    containerPackage size == 0 ifTrue:[
-		containerPackage := (self class lastPackage ) ? Project current package.
-	    ].
-	    answer := self confirmWithCancel:(resources
-						string:'The class %3 seems to have no (valid) repository information.\\I assume you want to check it out from: %1/%2.'
-						with:containerModule allBold
-						with:containerPackage allBold
-						with:currentClass name allBold) withCRs.
-	    answer isNil ifTrue:[^ self "cancelled"].
-	    answer ifFalse:[
-		rslt := self
-		    askForContainer:(resources string:'The class seems to have no repository information.\\Do you want to checkOut from an existing containers contents ?')
-		    title:'Container to load from' note:nil
-		    initialModule:containerModule
-		    initialPackage:containerPackage
-		    initialFileName:(currentClass nameWithoutPrefix , '.st')
-		    forNewContainer:false.
-
-		rslt isNil ifTrue:[
-		    "/ canel
-		    ^ self
-		].
-		containerModule := "lastModule :=" rslt at:#module.
-		containerPackage := "lastPackage :=" rslt at:#package.
-		containerFile := rslt at:#fileName.
-	    ].
+        rev := currentClass binaryRevision.
+        rev2 := currentClass revision.
+        rev isNil ifTrue:[
+            rev := rev2
+        ].
+        rev isNil ifTrue:[
+            pkg := currentClass package.
+            (pkg notNil and:[pkg ~= PackageId noProjectID]) ifTrue:[
+                containerModule := pkg upTo:$:.
+                containerPackage := pkg copyFrom:(containerModule size + 2).
+            ].
+            containerModule size == 0 ifTrue:[
+                containerModule := (self class lastModule ) ? Project current repositoryModule.
+            ].
+            containerPackage size == 0 ifTrue:[
+                containerPackage := (self class lastPackage ) ? Project current package.
+            ].
+            answer := self confirmWithCancel:(resources 
+                                                string:'The class %3 seems to have no (valid) repository information.\\I assume you want to check it out from: %1/%2.' 
+                                                with:containerModule allBold 
+                                                with:containerPackage allBold
+                                                with:currentClass name allBold) withCRs.
+            answer isNil ifTrue:[^ self "cancelled"].
+            answer ifFalse:[
+                rslt := self
+                    askForContainer:(resources string:'The class seems to have no repository information.\\Do you want to checkOut from an existing containers contents ?')
+                    title:'Container to load from' note:nil 
+                    initialModule:containerModule 
+                    initialPackage:containerPackage 
+                    initialFileName:(currentClass nameWithoutPrefix , '.st')
+                    forNewContainer:false.
+
+                rslt isNil ifTrue:[
+                    "/ canel
+                    ^ self
+                ].
+                containerModule := "lastModule :=" rslt at:#module.
+                containerPackage := "lastPackage :=" rslt at:#package.
+                containerFile := rslt at:#fileName.
+            ].
 
 "/            rslt := self
 "/                askForContainer:(resources string:'The class seems to have no (valid) repository information.\\Do you want to check it out from an existing container ?')
-"/                title:'Container to checkOut' note:nil
-"/                initialModule:containerModule
+"/                title:'Container to checkOut' note:nil 
+"/                initialModule:containerModule 
 "/                initialPackage:containerPackage
 "/                initialFileName:(currentClass name , '.st').
 "/                forNewContainer:false.
 "/            rslt isNil ifTrue:[^ self].
-	    "/ self warn:(resources string:'Class %1 seems to be not yet in the repository' with:currentClass name allBold).
-	    "/ ^ self
-	].
+            "/ self warn:(resources string:'Class %1 seems to be not yet in the repository' with:currentClass name allBold).
+            "/ ^ self
+        ].
     ].
 
     containerFile isNil ifTrue:[
-	containerFile := currentClass classFilename.
+        containerFile := currentClass classFilename.
     ].
 
     "/
@@ -1341,396 +1248,396 @@
     "/
 "/    newestRev := mgr newestRevisionOf:currentClass.
     containerModule isNil ifTrue:[
-	containerModule := Dialog request:(resources
-					stringWithCRs:'Missing Module Information for CheckOut of "%1".\\Module:'
-					with:aClass name allBold).
-	containerModule isEmptyOrNil ifTrue:[^ self].
+        containerModule := Dialog request:(resources 
+                                        stringWithCRs:'Missing Module Information for CheckOut of "%1".\\Module:'
+                                        with:aClass name allBold).
+        containerModule isEmptyOrNil ifTrue:[^ self].
     ].
     containerPackage isNil ifTrue:[
-	containerPackage := Dialog request:(resources
-					stringWithCRs:'Missing Package Information for CheckOut of "%1".\\Package:'
-					with:aClass name allBold).
-	containerPackage isEmptyOrNil ifTrue:[^ self].
+        containerPackage := Dialog request:(resources 
+                                        stringWithCRs:'Missing Package Information for CheckOut of "%1".\\Package:'
+                                        with:aClass name allBold).
+        containerPackage isEmptyOrNil ifTrue:[^ self].
     ].
 
     newestRev := mgr newestRevisionInFile:containerFile directory:containerPackage module:containerModule.
     askForRevision ifFalse:[
-	rev := newestRev ? ''
+        rev := newestRev ? ''
     ] ifTrue:[
-	msg := resources string:'CheckOut which revision of ''%1'': (empty for newest)' with:nm allBold.
-	rev notNil ifTrue:[
-	    msg := msg , '\\' , (resources string:'Current ''%1'' is based upon rev %2.'
-					   with:nm allBold with:rev).
-	    (rev2 notNil and:[rev2 ~= rev]) ifTrue:[
-		msg := msg , '\' , (resources string:'And has been checked into the repository as %1.' with:rev2)
-	    ]
-	].
-	newestRev notNil ifTrue:[
-	    msg := msg , '\' , (resources string:'Newest in repository is %1.' with:newestRev)
-	].
-
-	rev := self
-		    askForExistingRevision:msg
-		    title:'CheckOut from repository'
-		    class:currentClass.
-	rev isNil ifTrue:[
-	    ^ self   "/ canceled
-	].
+        msg := resources string:'CheckOut which revision of ''%1'': (empty for newest)' with:nm allBold.
+        rev notNil ifTrue:[
+            msg := msg , '\\' , (resources string:'Current ''%1'' is based upon rev %2.'
+                                           with:nm allBold with:rev).
+            (rev2 notNil and:[rev2 ~= rev]) ifTrue:[
+                msg := msg , '\' , (resources string:'And has been checked into the repository as %1.' with:rev2)
+            ]
+        ].
+        newestRev notNil ifTrue:[
+            msg := msg , '\' , (resources string:'Newest in repository is %1.' with:newestRev)
+        ].
+
+        rev := self
+                    askForExistingRevision:msg 
+                    title:'CheckOut from repository' 
+                    class:currentClass.
+        rev isNil ifTrue:[
+            ^ self   "/ canceled
+        ].
     ].
 
     rev withoutSpaces isEmpty ifTrue:[
-	msg := 'extracting newest %1 (' , (newestRev ? '???') , ')'.
-	"/ aStream := mgr getMostRecentSourceStreamForClassNamed:nm.
-	aStream := mgr getSourceStreamFor:currentClass revision:newestRev.
-	revString := '(newest: ' , (newestRev ? '???') , ')'.
+        msg := 'extracting newest %1 (' , (newestRev ? '???') , ')'.
+        "/ aStream := mgr getMostRecentSourceStreamForClassNamed:nm.
+        aStream := mgr getSourceStreamFor:currentClass revision:newestRev.
+        revString := '(newest: ' , (newestRev ? '???') , ')'.
     ] ifFalse:[
-	msg := 'extracting previous %1'.
+        msg := 'extracting previous %1'.
 "/        aStream := mgr getSourceStreamFor:currentClass revision:rev.
 "/        revString := rev
-	aStream := mgr
-	    streamForClass:currentClass
-	    fileName:containerFile
-	    revision:rev
-	    directory:containerPackage
-	    module:containerModule
-	    cache:true.
+        aStream := mgr  
+            streamForClass:currentClass
+            fileName:containerFile 
+            revision:rev 
+            directory:containerPackage 
+            module:containerModule
+            cache:true.
     ].
 
     aStream isNil ifTrue:[
-	self warn:(resources string:'Could not extract source of %1 from repository' with:aClass name allBold).
-	^ self
+        self warn:(resources string:'Could not extract source of %1 from repository' with:aClass name allBold).
+        ^ self
     ].
     aStream class readErrorSignal handle:[:ex |
-	self warn:('Read error while reading extracted source\\' , ex description) withCRs.
-	aStream close.
-	^ self
+        self warn:('Read error while reading extracted source\\' , ex description) withCRs.
+        aStream close.
+        ^ self
     ] do:[
-	sourceToLoad := aStream contents asString.
+        sourceToLoad := aStream contents asString.
     ].
     aStream close.
 
     wasInChangeSetBefore := ChangeSet current includesChangeForClassOrMetaclass:currentClass.
 
     currentClass isLoaded ifFalse:[
-	rev = newestRev ifTrue:[
-	    currentClass autoload.
-	] ifFalse:[
-	    sourceToLoad readStream fileIn.
-	].
-	wasInChangeSetBefore ifFalse:[
-	    ChangeSet current condenseChangesForClass:currentClass.
-	].
-	^ self.
+        rev = newestRev ifTrue:[
+            currentClass autoload.
+        ] ifFalse:[
+            sourceToLoad readStream fileIn.
+        ].
+        wasInChangeSetBefore ifFalse:[
+            ChangeSet current condenseChangesForClass:currentClass.
+        ].
+        ^ self.
     ].
 
     inChangeSet := aClass hasUnsavedChanges.
 
     Error handle:[:ex |
-	(Dialog
-	    confirm:(resources
-			stringWithCRs:'An error:\    %1\was encountered while generating the current source of the class %2.\This might be due to some missing or corrupted source file.\You may proceed, but no information about the differences between your current version and the repositories version can be shown.\\Continue ?'
-			with:ex description
-			with:currentClass name allBold)
-	    noLabel:'Cancel')
-	ifFalse:[
-	    AbortOperationRequest raise
-	].
-	sourceToLoad readStream fileIn.
-	^ self.
+        (Dialog 
+            confirm:(resources 
+                        stringWithCRs:'An error:\    %1\was encountered while generating the current source of the class %2.\This might be due to some missing or corrupted source file.\You may proceed, but no information about the differences between your current version and the repositories version can be shown.\\Continue ?'
+                        with:ex description 
+                        with:currentClass name allBold) 
+            noLabel:'Cancel') 
+        ifFalse:[
+            AbortOperationRequest raise
+        ].
+        sourceToLoad readStream fileIn.
+        ^ self.
     ] do:[
-	self activityNotification:'generating current source...'.
-
-	currentSource := self sourceCodeOfClass:currentClass.
-
-	self activityNotification:'comparing...'.
-
-	sourceToLoad = currentSource ifTrue:[
-	    "/ make all methods belong to the classes project
-	    self setPackageOfAllMethodsIn:aClass to:aClass package.
-	    inChangeSet ifTrue:[
-		rev = newestRev ifTrue:[
-		    (askForConfirmation not
-		    or:[ wasInChangeSetBefore not
-		    or:[ self confirm:(resources
-				    stringWithCRs:'%1 is up-to-date.\\Remove entries for %1 from changeSet ?'
-				    with:aClass name)]])
-		    ifTrue:[
-			ChangeSet current condenseChangesForClass:aClass.
-		    ].
-		].
-	    ].
-	    self activityNotification:'... nothing changed in repository'.
-	    ^ self.
-	].
-
-	self activityNotification:'generating diffSet...'.
-	listHere := ChangeSet fromStream:(currentSource readStream).
+        self activityNotification:'generating current source...'.
+
+        currentSource := self sourceCodeOfClass:currentClass.
+
+        self activityNotification:'comparing...'.
+
+        sourceToLoad = currentSource ifTrue:[
+            "/ make all methods belong to the classes project
+            self setPackageOfAllMethodsIn:aClass to:aClass package.
+            inChangeSet ifTrue:[
+                rev = newestRev ifTrue:[
+                    (askForConfirmation not
+                    or:[ wasInChangeSetBefore not
+                    or:[ self confirm:(resources 
+                                    stringWithCRs:'%1 is up-to-date.\\Remove entries for %1 from changeSet ?'
+                                    with:aClass name)]]) 
+                    ifTrue:[
+                        ChangeSet current condenseChangesForClass:aClass.
+                    ].
+                ].
+            ].
+            self activityNotification:'... nothing changed in repository'.
+            ^ self.
+        ].
+
+        self activityNotification:'generating diffSet...'.
+        listHere := ChangeSet fromStream:(currentSource readStream).
     ].
 
     listRep := ChangeSet fromStream:(sourceToLoad readStream).
 
     Error handle:[:ex |
-	(Dialog
-	    confirm:(resources
-			stringWithCRs:'An error:\    %1\was encountered while trying to figure out what has changed.\This might be due to some missing or corrupted source file.\If you proceed, the old code will be loaded over the existing code without further checks (fileIn).\\Continue ?'
-			with:ex description
-		    )
-	    noLabel:'Cancel')
-	ifFalse:[
-	    ^ self
-	].
-	sourceToLoad readStream fileIn.
-	^ self.
+        (Dialog 
+            confirm:(resources 
+                        stringWithCRs:'An error:\    %1\was encountered while trying to figure out what has changed.\This might be due to some missing or corrupted source file.\If you proceed, the old code will be loaded over the existing code without further checks (fileIn).\\Continue ?'
+                        with:ex description
+                    ) 
+            noLabel:'Cancel') 
+        ifFalse:[
+            ^ self
+        ].
+        sourceToLoad readStream fileIn.
+        ^ self.
     ] do:[
-	versionMethodsHere := listHere select:[:change | (change isMethodChange
-					       and:[(AbstractSourceCodeManager isVersionMethodSelector:change selector)
-					       and:[change changeClass isMeta]])].
-
-	versionMethodsRep := listRep select:[:change | (change isMethodChange
-					       and:[(AbstractSourceCodeManager isVersionMethodSelector:change selector)
-					       and:[change changeClass isMeta]])].
-
-	"/ compare all but the version methods
-	listHere := listHere select:[:change | (change isMethodChange
-					       and:[(AbstractSourceCodeManager isVersionMethodSelector:change selector)
-					       and:[change changeClass isMeta]]) not].
-	listRep := listRep select:[:change | (change isMethodChange
-					       and:[(AbstractSourceCodeManager isVersionMethodSelector:change selector)
-					       and:[change changeClass isMeta]]) not].
-
-	diffSet := listHere diffSetsAgainst:listRep.
-	changed := diffSet changed.
-	onlyHere := diffSet onlyInReceiver.
-
-	"/ reject extensions
-	onlyHere := onlyHere reject:[:eachDiff|
-			|method methodsPackage|
-
-			eachDiff isClassDefinitionChange
-			and:[ eachDiff changeClass notNil
-			and:[ (method := (eachDiff changeClass compiledMethodAt:eachDiff selector)) notNil
-			and:[ (methodsPackage := method package) ~= containerPackage
-			and:[ methodsPackage ~= PackageId noProjectID  ]]]]
-		    ].
-
-	onlyInRep := diffSet onlyInArg.
-
-	changedClassDefinitions := changed select:[:eachChangePair | eachChangePair first isClassDefinitionChange].
-	changed := changed reject:[:eachChangePair | eachChangePair first isClassDefinitionChange].
-	changed := changed reject:[:eachChangePair | eachChangePair first isClassCommentChange].
-
-	labels := #('Cancel' 'Merge' 'Load').
-	values := #(nil #merge #load).
-	default := askForRevision
-			ifTrue:[3. "i.e. load"]
-			ifFalse:[2. "i.e. merge"].
-
-	msg := 'About to load ''%4''.\\'.
-	onlyInRep size > 0 ifTrue:[
-	    msg := msg , 'The repositories version contains %1 method(s) which are not in your current class.\'.
-	].
-	onlyHere size > 0 ifTrue:[
-	    msg := msg , (onlyInRep size > 0 ifTrue:['And there '] ifFalse:['There ']).
-	    msg := msg , 'are %2 methods in your current class, which are not in the repository.\'.
-	].
-	changed size > 0 ifTrue:[
-	    changed size == 1 ifTrue:[
-		msg := msg , 'The ''%6''-method is different (present in both).\\'.
-		singleChangeSelector := changed first first selector allBold
-	    ] ifFalse:[
-		msg := msg , '%3 methods are different (present in both).\\'.
-	    ]
-	].
-	changedClassDefinitions size > 0 ifTrue:[
-	    msg := msg , (changedClassDefinitions size == 1
-			    ifTrue:['The class definition is different.\\']
-			    ifFalse:['%5 class definitions are different.\\'])
-	].
-
-	onlyHere isEmpty ifTrue:[
-	    onlyInRep isEmpty ifTrue:[
-		(changed isEmpty and:[changedClassDefinitions isEmpty]) ifTrue:[
+        versionMethodsHere := listHere select:[:change | (change isMethodChange 
+                                               and:[(AbstractSourceCodeManager isVersionMethodSelector:change selector)
+                                               and:[change changeClass isMeta]])].
+
+        versionMethodsRep := listRep select:[:change | (change isMethodChange 
+                                               and:[(AbstractSourceCodeManager isVersionMethodSelector:change selector)
+                                               and:[change changeClass isMeta]])].
+
+        "/ compare all but the version methods
+        listHere := listHere select:[:change | (change isMethodChange 
+                                               and:[(AbstractSourceCodeManager isVersionMethodSelector:change selector)
+                                               and:[change changeClass isMeta]]) not].
+        listRep := listRep select:[:change | (change isMethodChange 
+                                               and:[(AbstractSourceCodeManager isVersionMethodSelector:change selector)
+                                               and:[change changeClass isMeta]]) not].
+
+        diffSet := listHere diffSetsAgainst:listRep.
+        changed := diffSet changed.
+        onlyHere := diffSet onlyInReceiver.
+
+        "/ reject extensions
+        onlyHere := onlyHere reject:[:eachDiff|  
+                        |method methodsPackage|
+
+                        eachDiff isClassDefinitionChange  
+                        and:[ eachDiff changeClass notNil
+                        and:[ (method := (eachDiff changeClass compiledMethodAt:eachDiff selector)) notNil 
+                        and:[ (methodsPackage := method package) ~= containerPackage
+                        and:[ methodsPackage ~= PackageId noProjectID  ]]]]
+                    ]. 
+
+        onlyInRep := diffSet onlyInArg.
+
+        changedClassDefinitions := changed select:[:eachChangePair | eachChangePair first isClassDefinitionChange]. 
+        changed := changed reject:[:eachChangePair | eachChangePair first isClassDefinitionChange]. 
+        changed := changed reject:[:eachChangePair | eachChangePair first isClassCommentChange]. 
+
+        labels := #('Cancel' 'Merge' 'Load'). 
+        values := #(nil #merge #load). 
+        default := askForRevision 
+                        ifTrue:[3. "i.e. load"]
+                        ifFalse:[2. "i.e. merge"].
+
+        msg := 'About to load ''%4''.\\'.
+        onlyInRep size > 0 ifTrue:[
+            msg := msg , 'The repositories version contains %1 method(s) which are not in your current class.\'.
+        ].
+        onlyHere size > 0 ifTrue:[
+            msg := msg , (onlyInRep size > 0 ifTrue:['And there '] ifFalse:['There ']).
+            msg := msg , 'are %2 methods in your current class, which are not in the repository.\'.
+        ].
+        changed size > 0 ifTrue:[
+            changed size == 1 ifTrue:[
+                msg := msg , 'The ''%6''-method is different (present in both).\\'.
+                singleChangeSelector := changed first first selector allBold
+            ] ifFalse:[
+                msg := msg , '%3 methods are different (present in both).\\'.
+            ]
+        ].
+        changedClassDefinitions size > 0 ifTrue:[
+            msg := msg , (changedClassDefinitions size == 1 
+                            ifTrue:['The class definition is different.\\'] 
+                            ifFalse:['%5 class definitions are different.\\'])
+        ].
+
+        onlyHere isEmpty ifTrue:[
+            onlyInRep isEmpty ifTrue:[
+                (changed isEmpty and:[changedClassDefinitions isEmpty]) ifTrue:[
 "/ self halt.
-		    versionMethodsRep notEmpty ifTrue:[
-			(self confirm:(resources string:'Only version methods are different in %1.\\Update the version-IDs ?' with:aClass name allBold) withCRs) ifTrue:[
-			    versionMethodsRep do:[:each | each apply].
-			]
-		    ].
-		    "/ make all those methods belong to the classes project
-		    "/ no - that is wrong !! self setPackageOfAllMethodsIn:aClass to:aClass package.
-		    self setPackageOfAllMethodsInChangeSet:listRep to:aClass package.
-		    self activityNotification:'Only version methods are different in the repository'.
-		    ^ self
-		].
-		inChangeSet ifTrue:[
-		    msg := msg , '\Attention:\Load will undo your changes made to ''%4'' (if any were made).'.
-		].
-		labels := #('Cancel' 'Load').
-		values := #(nil #load).
-		default := askForRevision
-				ifTrue:[2. "i.e. load"]
-				ifFalse:[1. "i.e. cancel"].
-		default := 2.
-	    ] ifFalse:[
-		changed isEmpty ifTrue:[
-		    msg := msg , '\Attention:\Load will load methods which are not present in ''%4''.'.
-		    labels := #('Cancel' 'Load').
-		    values := #(nil #load).
-		    default := askForRevision
-				    ifTrue:[2. "i.e. load"]
-				    ifFalse:[1. "i.e. cancel"].
-		    default := 2.
-		] ifFalse:[
-		    inChangeSet ifTrue:[
-			msg := msg , '\Attention:\Load will undo your changes made to ''%4'' (if any were made);'.
-		    ].
-		    msg := msg , '\Merge will only load methods which are not present in ''%4'' (i.e. undo removals but preserve changes).'.
-		].
-	    ]
-	] ifFalse:[
-	    onlyInRep isEmpty ifTrue:[
-		inChangeSet ifTrue:[
-		    msg := msg , '\Attention:\Load will undo your changes made to ''%4'' (if any were made),'.
-		    msg := msg , '\and remove added methods which are not present in the repository version.'.
-		].
-		labels := #('Cancel' 'Load').
-		values := #(nil #load).
-		default := askForRevision
-				ifTrue:[2. "i.e. load"]
-				ifFalse:[1. "i.e. cancel"].
-		default := 2.
-	    ] ifFalse:[
-		inChangeSet ifTrue:[
-		    msg := msg , '\Attention:\Load will undo your changes made to ''%4'' (if any were made);'.
-		    msg := msg , '\Merge will only load methods which are not present in ''%4'' (i.e. undo removals but preserve changes).'.
-		]
-	    ]
-	].
-
-	msg := msg bindWith:onlyInRep size printString
-		   with:onlyHere size printString
-		   with:changed size printString
-		   with:aClass name allBold
-		   with:changedClassDefinitions size printString
-		   with:singleChangeSelector.
-
-	askForConfirmation ifFalse:[
-	    answer := #load
-	] ifTrue:[
-	    answer := (Dialog confirmWithCancel:msg withCRs
-		   labels:(resources array:labels)
-		   values:values
-		   default:default).
-	    answer isNil ifTrue:[
-		self activityNotification:'...cancelled'.
-		^ self
-	    ].
-	].
-	self activityNotification:'updating...'.
-	changedClasses := IdentitySet new.
+                    versionMethodsRep notEmpty ifTrue:[
+                        (self confirm:(resources string:'Only version methods are different in %1.\\Update the version-IDs ?' with:aClass name allBold) withCRs) ifTrue:[
+                            versionMethodsRep do:[:each | each apply].
+                        ]
+                    ].
+                    "/ make all those methods belong to the classes project
+                    "/ no - that is wrong !! self setPackageOfAllMethodsIn:aClass to:aClass package.
+                    self setPackageOfAllMethodsInChangeSet:listRep to:aClass package.
+                    self activityNotification:'Only version methods are different in the repository'.
+                    ^ self
+                ].
+                inChangeSet ifTrue:[
+                    msg := msg , '\Attention:\Load will undo your changes made to ''%4'' (if any were made).'.
+                ].
+                labels := #('Cancel' 'Load'). 
+                values := #(nil #load). 
+                default := askForRevision 
+                                ifTrue:[2. "i.e. load"]
+                                ifFalse:[1. "i.e. cancel"].
+                default := 2. 
+            ] ifFalse:[
+                changed isEmpty ifTrue:[
+                    msg := msg , '\Attention:\Load will load methods which are not present in ''%4''.'.
+                    labels := #('Cancel' 'Load'). 
+                    values := #(nil #load). 
+                    default := askForRevision 
+                                    ifTrue:[2. "i.e. load"]
+                                    ifFalse:[1. "i.e. cancel"].
+                    default := 2. 
+                ] ifFalse:[
+                    inChangeSet ifTrue:[
+                        msg := msg , '\Attention:\Load will undo your changes made to ''%4'' (if any were made);'.
+                    ].
+                    msg := msg , '\Merge will only load methods which are not present in ''%4'' (i.e. undo removals but preserve changes).'.
+                ].
+            ]
+        ] ifFalse:[
+            onlyInRep isEmpty ifTrue:[
+                inChangeSet ifTrue:[
+                    msg := msg , '\Attention:\Load will undo your changes made to ''%4'' (if any were made),'.
+                    msg := msg , '\and remove added methods which are not present in the repository version.'.
+                ].
+                labels := #('Cancel' 'Load'). 
+                values := #(nil #load). 
+                default := askForRevision 
+                                ifTrue:[2. "i.e. load"]
+                                ifFalse:[1. "i.e. cancel"].
+                default := 2. 
+            ] ifFalse:[
+                inChangeSet ifTrue:[
+                    msg := msg , '\Attention:\Load will undo your changes made to ''%4'' (if any were made);'.
+                    msg := msg , '\Merge will only load methods which are not present in ''%4'' (i.e. undo removals but preserve changes).'.
+                ]
+            ]
+        ].
+
+        msg := msg bindWith:onlyInRep size printString 
+                   with:onlyHere size printString 
+                   with:changed size printString
+                   with:aClass name allBold
+                   with:changedClassDefinitions size printString
+                   with:singleChangeSelector.
+
+        askForConfirmation ifFalse:[
+            answer := #load           
+        ] ifTrue:[
+            answer := (Dialog confirmWithCancel:msg withCRs
+                   labels:(resources array:labels)
+                   values:values 
+                   default:default).
+            answer isNil ifTrue:[
+                self activityNotification:'...cancelled'.
+                ^ self
+            ].
+        ].
+        self activityNotification:'updating...'.
+        changedClasses := IdentitySet new.
 
     "/    Class withoutUpdatingChangesDo:[
-	answer == #load ifTrue:[
-	    "when loading, remove all the methods which are no longer in classes with a changed
-	     class definition. So we avoid possible compile errors of old methods, which will go away"
-	    onlyHere do:[:eachChange |
-		 "remove this change (method not present in repository version)"
-		 |cClass cSel|
-		 eachChange isMethodChange ifTrue:[
-		     cClass := eachChange changeClass.
-		     cSel := eachChange selector.
-		     cClass notNil ifTrue:[ cClass basicRemoveSelector:cSel ].
-		 ]
-	    ].
-
-	    changedClassDefinitions do:[:eachChangeArr |
-		|cHere eachChangedClass|
-		cHere := eachChangeArr at:1.
-		eachChangedClass := cHere changeClass.
-		eachChangedClass notNil ifTrue:[
-		    changedClasses add:eachChangedClass.
-		    eachChangedClass := eachChangedClass theNonMetaclass.
-
-		    "remove changed methods now, but keep the changes (to be applied later)"
-		    changed do:[:eachChangeArr|
-			|eachChange eachClass|
-
-			eachChange := eachChangeArr first.
-			eachChange isMethodChange ifTrue:[
-			    eachClass := eachChange changeClass.
-			    eachClass theNonMetaclass == eachChangedClass ifTrue:[
-				eachClass basicRemoveSelector:eachChange selector.
-			    ].
-			].
-		    ].
-		]
-	    ].
-
-	   "apply class definition changes (use the repository version)"
-	   changedClassDefinitions do:[:eachChangeArr |
-		|cRep|
-		cRep := eachChangeArr at:2.
-		cRep apply.
-	    ].
-	].
-
-	onlyInRep do:[:eachChange |
-	    |changeClass|
-
-	    "apply this change (method only present in rep-version)"
-	     eachChange apply.
-	     eachChange isMethodChange ifTrue:[
-		 changeClass := eachChange changeClass.
-		 changeClass notNil ifTrue:[
-		     eachChange changeMethod setPackage:(changeClass package).
-		     changedClasses add:changeClass.
-		 ]
-	     ]
-	]
+        answer == #load ifTrue:[
+            "when loading, remove all the methods which are no longer in classes with a changed
+             class definition. So we avoid possible compile errors of old methods, which will go away"
+            onlyHere do:[:eachChange |   
+                 "remove this change (method not present in repository version)"
+                 |cClass cSel|
+                 eachChange isMethodChange ifTrue:[
+                     cClass := eachChange changeClass.
+                     cSel := eachChange selector.
+                     cClass notNil ifTrue:[ cClass basicRemoveSelector:cSel ].
+                 ]
+            ].
+
+            changedClassDefinitions do:[:eachChangeArr | 
+                |cHere eachChangedClass| 
+                cHere := eachChangeArr at:1.
+                eachChangedClass := cHere changeClass.
+                eachChangedClass notNil ifTrue:[
+                    changedClasses add:eachChangedClass.
+                    eachChangedClass := eachChangedClass theNonMetaclass.
+
+                    "remove changed methods now, but keep the changes (to be applied later)"
+                    changed do:[:eachChangeArr|
+                        |eachChange eachClass|
+
+                        eachChange := eachChangeArr first.
+                        eachChange isMethodChange ifTrue:[
+                            eachClass := eachChange changeClass.
+                            eachClass theNonMetaclass == eachChangedClass ifTrue:[
+                                eachClass basicRemoveSelector:eachChange selector.
+                            ].
+                        ].
+                    ].
+                ]
+            ].
+
+           "apply class definition changes (use the repository version)"
+           changedClassDefinitions do:[:eachChangeArr |    
+                |cRep| 
+                cRep := eachChangeArr at:2.
+                cRep apply.
+            ].
+        ].
+
+        onlyInRep do:[:eachChange |
+            |changeClass|
+
+            "apply this change (method only present in rep-version)"
+             eachChange apply.
+             eachChange isMethodChange ifTrue:[
+                 changeClass := eachChange changeClass.
+                 changeClass notNil ifTrue:[
+                     eachChange changeMethod setPackage:(changeClass package).
+                     changedClasses add:changeClass.
+                 ]
+             ]
+        ]
     .
-	answer == #load ifTrue:[
-	    changed do:[:eachChangeArr | "apply this change (go to rep-version)"
-		 |cHere cRep|
-		 cHere := eachChangeArr at:1.
-		 cRep := eachChangeArr at:2.
-		 cRep apply.
-		 cRep isMethodChange ifTrue:[
-		     cRep changeMethod setPackage:(cRep changeClass package).
-		     changedClasses add:cRep changeClass.
-		 ]
-	    ].
-
-	    versionMethodsRep size >= 1 ifTrue:[
-		versionMethodsRep last apply.
-	    ] ifFalse:[
-		self error:'missing version method in repository' mayProceed:true.
-	    ].
-	    "/ make all those methods belong to the classes project
-	    "/ no - that is wrong !! self setPackageOfAllMethodsIn:aClass to:aClass package.
-	    self setPackageOfAllMethodsInChangeSet:listRep to:aClass package.
-	].
+        answer == #load ifTrue:[
+            changed do:[:eachChangeArr | "apply this change (go to rep-version)"
+                 |cHere cRep| 
+                 cHere := eachChangeArr at:1.
+                 cRep := eachChangeArr at:2.
+                 cRep apply.
+                 cRep isMethodChange ifTrue:[
+                     cRep changeMethod setPackage:(cRep changeClass package).
+                     changedClasses add:cRep changeClass.
+                 ]
+            ].
+
+            versionMethodsRep size >= 1 ifTrue:[
+                versionMethodsRep last apply.
+            ] ifFalse:[
+                self error:'missing version method in repository' mayProceed:true.
+            ].
+            "/ make all those methods belong to the classes project
+            "/ no - that is wrong !! self setPackageOfAllMethodsIn:aClass to:aClass package.
+            self setPackageOfAllMethodsInChangeSet:listRep to:aClass package.
+        ].
     "/    ].
 
-	answer == #load ifTrue:[
-	    inChangeSet := aClass hasUnsavedChanges.
-	    inChangeSet ifTrue:[
-		rev = newestRev ifTrue:[
-		    (wasInChangeSetBefore not
-		     or:[ self confirm:(resources
-				    stringWithCRs:'%1 is now up-to-date.\\Remove entries for %1 from changeSet ?'
-				    with:aClass name)])
-		    ifTrue:[
-			ChangeSet current condenseChangesForClass:aClass.
-		    ].
-		].
-	    ].
-	].
-
-	changedClasses do:[:eachClass |
-	     eachClass changed:#projectOrganization.
-	].
-	Smalltalk changed:#projectOrganization.
-	self activityNotification:'... done'.
+        answer == #load ifTrue:[
+            inChangeSet := aClass hasUnsavedChanges.
+            inChangeSet ifTrue:[
+                rev = newestRev ifTrue:[
+                    (wasInChangeSetBefore not
+                     or:[ self confirm:(resources 
+                                    stringWithCRs:'%1 is now up-to-date.\\Remove entries for %1 from changeSet ?'
+                                    with:aClass name)]) 
+                    ifTrue:[
+                        ChangeSet current condenseChangesForClass:aClass.
+                    ].
+                ].
+            ].
+        ].
+
+        changedClasses do:[:eachClass |
+             eachClass changed:#projectOrganization.
+        ].
+        Smalltalk changed:#projectOrganization.
+        self activityNotification:'... done'.
     ].
 
     "Modified: / 07-02-2001 / 18:18:32 / ps"
@@ -1741,172 +1648,169 @@
     "check-out a class from the source repository.
      If askForRevision is false, check-out the newest version."
 
-    |resources
-     inChangeSet extensionMethods
+    |inChangeSet extensionMethods
      rev msg
-     listHere listRep diffSet
+     listHere listRep diffSet 
      changed onlyHere onlyInRep answer labels values singleChangeSelector
      changedClasses default |
 
     listRep := self changeSetForExtensionMethodsForPackage:packageToCheckOut askForRevision:askForRevision usingManager:aSourceCodeManager.
     listRep isNil ifTrue:[ ^self ].
 
-    resources := self classResources.
-
     self activityNotification:'generating diffSet...'.
 
     extensionMethods := OrderedCollection new.
     Smalltalk allClassesDo:[:aClass | |owner classPackage|
-	"/ individual methods ...
-	aClass isMeta ifFalse:[
-	    (aClass package ~= packageToCheckOut) ifTrue:[
-		aClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
-		    "/ methods in this project ...
-		    (mthd package = packageToCheckOut) ifTrue:[
-			"/ ... whose class is not in the ckechIn-set
-			extensionMethods add:mthd
-		    ]
-		].
-	    ].
-	].
+        "/ individual methods ...
+        aClass isMeta ifFalse:[
+            (aClass package ~= packageToCheckOut) ifTrue:[
+                aClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
+                    "/ methods in this project ...
+                    (mthd package = packageToCheckOut) ifTrue:[
+                        "/ ... whose class is not in the ckechIn-set
+                        extensionMethods add:mthd
+                    ]
+                ].
+            ].
+        ].
     ].
     listHere := ChangeSet forExistingMethods:extensionMethods.
 
     inChangeSet := listRep contains:[:someChange |
-			    |cClass cSel|
-
-			    someChange isMethodChange ifTrue:[
-				cClass := someChange changeClass.
-				cSel := someChange selector.
-				ChangeSet current includesChangeForClass:cClass selector:cSel
-			    ]
-		    ].
+                            |cClass cSel|
+
+                            someChange isMethodChange ifTrue:[
+                                cClass := someChange changeClass.
+                                cSel := someChange selector.
+                                ChangeSet current includesChangeForClass:cClass selector:cSel
+                            ]
+                    ].
 
     diffSet := listHere diffSetsAgainst:listRep.
     changed := diffSet changed.
     onlyHere := diffSet onlyInReceiver.
     onlyInRep := diffSet onlyInArg.
 
-    labels := #('Cancel' 'Merge' 'Load').
-    values := #(nil #merge #load).
-    default := askForRevision
-		    ifTrue:[3. "i.e. load"]
-		    ifFalse:[2. "i.e. merge"].
+    labels := #('Cancel' 'Merge' 'Load'). 
+    values := #(nil #merge #load). 
+    default := askForRevision 
+                    ifTrue:[3. "i.e. load"]
+                    ifFalse:[2. "i.e. merge"].
 
     msg := 'About to load extensions for ''%5''.\\'.
     onlyInRep size > 0 ifTrue:[
-	msg := msg , 'The repositories version contains %1 extension method(s) which are not in your current image.\'.
+        msg := msg , 'The repositories version contains %1 extension method(s) which are not in your current image.\'.
     ].
     onlyHere size > 0 ifTrue:[
-	onlyInRep size > 0 ifTrue:[
-	    msg := msg , 'And there '.
-	] ifFalse:[
-	    msg := msg , 'There '.
-	].
-	msg := msg , 'are %2 extension methods in your current image, which are not in the repository.\'.
+        onlyInRep size > 0 ifTrue:[
+            msg := msg , 'And there '.
+        ] ifFalse:[
+            msg := msg , 'There '.
+        ].
+        msg := msg , 'are %2 extension methods in your current image, which are not in the repository.\'.
     ].
     changed size > 0 ifTrue:[
-	changed size == 1 ifTrue:[
-	    msg := msg , 'The ''%5''-method is different (present in both).\\'.
-	    singleChangeSelector := changed first first selector allBold
-	] ifFalse:[
-	    msg := msg , '%3 methods are different (present in both).\\'.
-	]
+        changed size == 1 ifTrue:[
+            msg := msg , 'The ''%5''-method is different (present in both).\\'.
+            singleChangeSelector := changed first first selector allBold
+        ] ifFalse:[
+            msg := msg , '%3 methods are different (present in both).\\'.
+        ]
     ].
 
     onlyHere isEmpty ifTrue:[
-	onlyInRep isEmpty ifTrue:[
-	    (changed isEmpty) ifTrue:[
-		listRep do:[:eachChange |
-		    eachChange changeMethod setPackage:packageToCheckOut.
-		].
-		^ self
-	    ].
-	    inChangeSet ifTrue:[
-		msg := msg , '\Attention:\Load may undo any changes made to on of the extension methods (if any were made).'.
-	    ].
-	    labels := #('Cancel' 'Load').
-	    values := #(nil #load).
-	    default := askForRevision
-			    ifTrue:[2. "i.e. load"]
-			    ifFalse:[1. "i.e. cancel"].
-	] ifFalse:[
-	    changed isEmpty ifTrue:[
-		msg := msg , '\Attention:\Load will load methods which are not present in the image.'.
-		labels := #('Cancel' 'Load').
-		values := #(nil #load).
-		default := askForRevision
-				ifTrue:[2. "i.e. load"]
-				ifFalse:[1. "i.e. cancel"].
-	    ] ifFalse:[
-		inChangeSet ifTrue:[
-		    msg := msg , '\Attention:\Load will undo your changes made to the image (if any were made);'.
-		].
-		msg := msg , '\Merge will only load methods which are not present in the image (i.e. undo removals but preserve changes).'.
-	    ].
-	]
+        onlyInRep isEmpty ifTrue:[
+            (changed isEmpty) ifTrue:[
+                listRep do:[:eachChange |
+                    eachChange changeMethod setPackage:packageToCheckOut.
+                ].
+                ^ self
+            ].
+            inChangeSet ifTrue:[
+                msg := msg , '\Attention:\Load may undo any changes made to on of the extension methods (if any were made).'.
+            ].
+            labels := #('Cancel' 'Load'). 
+            values := #(nil #load). 
+            default := askForRevision 
+                            ifTrue:[2. "i.e. load"]
+                            ifFalse:[1. "i.e. cancel"].
+        ] ifFalse:[
+            changed isEmpty ifTrue:[
+                msg := msg , '\Attention:\Load will load methods which are not present in the image.'.
+                labels := #('Cancel' 'Load'). 
+                values := #(nil #load). 
+                default := askForRevision 
+                                ifTrue:[2. "i.e. load"]
+                                ifFalse:[1. "i.e. cancel"].
+            ] ifFalse:[
+                inChangeSet ifTrue:[
+                    msg := msg , '\Attention:\Load will undo your changes made to the image (if any were made);'.
+                ].
+                msg := msg , '\Merge will only load methods which are not present in the image (i.e. undo removals but preserve changes).'.
+            ].
+        ]
     ] ifFalse:[
-	onlyInRep isEmpty ifTrue:[
-	    inChangeSet ifTrue:[
-		msg := msg , '\Attention:\Load will undo your changes made to the image (if any were made),'.
-		msg := msg , '\and remove added methods which are not present in the repository version.'.
-	    ].
-	    labels := #('Cancel' 'Load').
-	    values := #(nil #load).
-	    default := askForRevision
-			    ifTrue:[2. "i.e. load"]
-			    ifFalse:[1. "i.e. cancel"].
-	] ifFalse:[
-	    inChangeSet ifTrue:[
-		msg := msg , '\Attention:\Load will undo your changes made to the image (if any were made);'.
-		msg := msg , '\Merge will only load methods which are not present in the image (i.e. undo removals but preserve changes).'.
-	    ]
-	]
+        onlyInRep isEmpty ifTrue:[
+            inChangeSet ifTrue:[
+                msg := msg , '\Attention:\Load will undo your changes made to the image (if any were made),'.
+                msg := msg , '\and remove added methods which are not present in the repository version.'.
+            ].
+            labels := #('Cancel' 'Load'). 
+            values := #(nil #load). 
+            default := askForRevision 
+                            ifTrue:[2. "i.e. load"]
+                            ifFalse:[1. "i.e. cancel"].
+        ] ifFalse:[
+            inChangeSet ifTrue:[
+                msg := msg , '\Attention:\Load will undo your changes made to the image (if any were made);'.
+                msg := msg , '\Merge will only load methods which are not present in the image (i.e. undo removals but preserve changes).'.
+            ]
+        ]
     ].
 
-    msg := msg bindWith:onlyInRep size printString
-	       with:onlyHere size printString
-	       with:changed size printString
-	       with:singleChangeSelector
-	       with:packageToCheckOut allBold.
+    msg := msg bindWith:onlyInRep size printString 
+               with:onlyHere size printString 
+               with:changed size printString
+               with:singleChangeSelector
+               with:packageToCheckOut allBold.
 
     answer := (Dialog confirmWithCancel:msg withCRs
-	   labels:(resources array:labels)
-	   values:values
-	   default:default).
+           labels:(resources array:labels)
+           values:values 
+           default:default).
     answer isNil ifTrue:[^ self].
 
     self activityNotification:'updating...'.
     changedClasses := IdentitySet new.
 
 "/    Class withoutUpdatingChangesDo:[
-	onlyInRep do:[:eachChange | "apply this change (method only present in rep-version)"
-				     Class withoutUpdatingChangeSetDo:[ eachChange apply ].
-
-				     eachChange changeMethod setPackage:packageToCheckOut.
-				     changedClasses add:eachChange changeClass.
-		     ].
-	answer == #load ifTrue:[
-	    onlyHere do:[:eachChange |   "remove this change (method not present in rep-version)"
-					 |cClass cSel|
-
-					 cClass := eachChange changeClass.
-					 cSel := eachChange selector.
-					 Class withoutUpdatingChangeSetDo:[ cClass removeSelector:cSel ].
-			].
-	    changed do:[:eachChangeArr | "apply this change (go to rep-version)"
-					 |cHere cRep|
-					 cHere := eachChangeArr at:1.
-					 cRep := eachChangeArr at:2.
-					 Class withoutUpdatingChangeSetDo:[ cRep apply ].
-
-					 cRep changeMethod setPackage:packageToCheckOut.
-					 changedClasses add:cRep changeClass.
-		       ].
-	].
+        onlyInRep do:[:eachChange | "apply this change (method only present in rep-version)"
+                                     Class withoutUpdatingChangeSetDo:[ eachChange apply ].
+
+                                     eachChange changeMethod setPackage:packageToCheckOut.
+                                     changedClasses add:eachChange changeClass.   
+                     ].
+        answer == #load ifTrue:[
+            onlyHere do:[:eachChange |   "remove this change (method not present in rep-version)"
+                                         |cClass cSel|
+
+                                         cClass := eachChange changeClass.
+                                         cSel := eachChange selector.
+                                         Class withoutUpdatingChangeSetDo:[ cClass removeSelector:cSel ].
+                        ].
+            changed do:[:eachChangeArr | "apply this change (go to rep-version)"
+                                         |cHere cRep| 
+                                         cHere := eachChangeArr at:1.
+                                         cRep := eachChangeArr at:2.
+                                         Class withoutUpdatingChangeSetDo:[ cRep apply ].
+
+                                         cRep changeMethod setPackage:packageToCheckOut.
+                                         changedClasses add:cRep changeClass.
+                       ].
+        ].
 "/    ].
     changedClasses do:[:eachClass |
-	 eachClass changed:#projectOrganization.
+         eachClass changed:#projectOrganization.
     ].
     Smalltalk changed:#projectOrganization.
 
@@ -1929,165 +1833,163 @@
     "open a diff-textView comparing the current (in-image) version
      against its orgiginal version found in the repository."
 
-    |classToCompare resources brwsr
+    |classToCompare brwsr
      aStream comparedSource currentSource rev revString thisRevString mgr
      nm msg revisionInClass newestRev versionsAreTheSame|
 
-    resources := self classResources.
-
     classToCompare := aClass theNonMetaclass.
 
     nm := classToCompare name.
     (mgr := manager) isNil ifTrue:[
-	mgr := self sourceCodeManagerFor:classToCompare.
-	mgr isNil ifTrue:[
-	    self error:'oops - no sourcecode manager' mayProceed:true.
-	    ^ self
-	].
+        mgr := self sourceCodeManagerFor:classToCompare.
+        mgr isNil ifTrue:[
+            self error:'oops - no sourcecode manager' mayProceed:true.
+            ^ self
+        ].
     ].
 
     rev := classToCompare revisionInfoOfManager:mgr.
 "/    rev := classToCompare binaryRevision.
     revisionInClass := classToCompare revision.
     rev isNil ifTrue:[
-	rev := revisionInClass
+        rev := revisionInClass
     ].
     rev isNil ifTrue:[
-	(Dialog confirm:'Class seems to be not yet in the repository (or classes revision info is corrupted)\\Proceed ?' withCRs)
-	ifFalse:[
-	    ^ self
-	]
+        (Dialog confirm:'Class seems to be not yet in the repository (or classes revision info is corrupted)\\Proceed ?' withCRs)
+        ifFalse:[
+            ^ self
+        ]
     ].
 
     "/
     "/ class in repository - ask for revision
     "/
     SourceCodeManagerError handle:[:ex |
-	Dialog warn:(resources
-				stringWithCRs:'Could not fetch source of "%1".\\Please check your %1-sourcecode manager''s settings.'
-				with:classToCompare name
-				with:classToCompare sourceCodeManager managerTypeName).
-	^ self.
+        Dialog warn:(resources 
+                                stringWithCRs:'Could not fetch source of "%1".\\Please check your %1-sourcecode manager''s settings.'
+                                with:classToCompare name
+                                with:classToCompare sourceCodeManager managerTypeName).
+        ^ self.
 
     ] do:[
-	newestRev := mgr newestRevisionOf:classToCompare.
+        newestRev := mgr newestRevisionOf:classToCompare.
     ].
     askForRevision ifTrue:[
-	msg := resources string:'Compare to revision: (empty for newest)'.
-	rev notNil ifTrue:[
-	    msg := msg , '\\' , (resources string:'Current %1 is based upon rev %2.'
-					   with:nm allBold with:rev).
-	    (revisionInClass notNil and:[revisionInClass ~= rev]) ifTrue:[
-		msg := msg , '\' , (resources string:'And has been checked into the repository as %1.'
-					       with:revisionInClass)
-	    ]
-	].
-	newestRev notNil ifTrue:[
-	    msg := msg , '\' , (resources string:'Newest in reporitory is %1.'
-					   with:newestRev)
-	].
-
-	rev := self
-		    askForExistingRevision:msg
-		    title:'Compare with repository'
-		    class:classToCompare.
+        msg := resources string:'Compare to revision: (empty for newest)'.
+        rev notNil ifTrue:[
+            msg := msg , '\\' , (resources string:'Current %1 is based upon rev %2.'
+                                           with:nm allBold with:rev).
+            (revisionInClass notNil and:[revisionInClass ~= rev]) ifTrue:[
+                msg := msg , '\' , (resources string:'And has been checked into the repository as %1.'
+                                               with:revisionInClass)
+            ]
+        ].
+        newestRev notNil ifTrue:[
+            msg := msg , '\' , (resources string:'Newest in reporitory is %1.'
+                                           with:newestRev)
+        ].
+
+        rev := self
+                    askForExistingRevision:msg 
+                    title:'Compare with repository' 
+                    class:classToCompare.
     ] ifFalse:[
-	rev := newestRev.
+        rev := newestRev.
     ].
 
     rev notNil ifTrue:[
-	rev withoutSpaces isEmpty ifTrue:[
-	    msg := 'extracting newest %1 (' , (newestRev ? '???') , ')'.
-	    "/ aStream := mgr getMostRecentSourceStreamForClassNamed:nm.
-	    aStream := mgr getSourceStreamFor:classToCompare revision:newestRev.
-	    revString := '(newest: ' , (newestRev ? '???') , ')'.
-	] ifFalse:[
-	    msg := 'extracting previous %1'.
-	    aStream := mgr getSourceStreamFor:classToCompare revision:rev.
-	    revString := rev
-	].
-
-	aStream isNil ifTrue:[
-	    self warn:'Could not extract source from repository (check repository settings / network)'.
-	    ^ self
-	].
-	aStream class readErrorSignal handle:[:ex |
-	    self warn:('Read error while reading extracted source\\' , ex description) withCRs.
-	    aStream close.
-	    ^ self
-	] do:[
-	    comparedSource := aStream contents asString.
-	].
-	aStream close.
-
-	self activityNotification:'generating current source...'.
-
-	currentSource := self sourceCodeOfClass:classToCompare.
-
-	self activityNotification:'comparing...'.
-
-	versionsAreTheSame := false.
-	comparedSource = currentSource ifTrue:[
-	    versionsAreTheSame := true.
-	] ifFalse:[
-	    thisRevString := revisionInClass ? 'no revision'.
-
-	    revString = '(newest)' ifTrue:[
-		(rev := mgr newestRevisionOf:classToCompare) notNil ifTrue:[
-		    revString := '(newest is ' , rev , ')'
-		]
-	    ].
-
-	    self activityNotification:'comparing...'.
-
-	    brwsr := (UserPreferences versionDiffViewerClass)
-		  openOnClass:classToCompare
-		  labelA:('Repository: ' , revString)
-		  sourceA:comparedSource
-		  labelB:('Current: (based on: ' , thisRevString , ')')
-		  sourceB:currentSource
-		  title:('Comparing ' , classToCompare name)
-		  ifSame:[versionsAreTheSame := true].
-
-	    versionsAreTheSame ifFalse:[
-		brwsr classChangeSet
-		    classBeingCompared:classToCompare;
-		    versionA:rev;
-		    versionB:rev , 'mod'.
-	    ].
-	].
-
-	versionsAreTheSame ifTrue:[
-	    (classToCompare hasUnsavedChanges) ifTrue:[
-		(self confirm:(resources
-				stringWithCRs:'Versions of %1 are identical.\\Remove entries from changeSet ?'
-				with:classToCompare name allBold)) ifTrue:[
-		    ChangeSet current condenseChangesForClass:classToCompare.
-		].
-	    ] ifFalse:[
-		self information:'Versions are identical.'.
-		ChangeSet current unrememberChangedClasses.
-	    ].
-	    revisionInClass isNil ifTrue:[
-		(Dialog confirm:'Update (Fix) the classes Revision Info ?' withCRs)
-		ifTrue:[
-		    |newString root|
-
-		    newString := mgr updatedRevisionStringOf:aClass forRevision:rev with:aClass revisionString.
-		    newString isNil ifTrue:[
-			root := mgr getCVSROOTForModule:(aClass package upTo:$:).
-			root := mgr repositoryTopDirectoryFromCVSRoot:root.
-			newString := '$', 'Header: ',(root copyReplaceAll: $: with:$/ ),'/'
-				     ,(Smalltalk fileNameForClass:aClass),'.st,v ',rev,' '
-				     ,(Date today printStringFormat:'%y-%m-%d'),' '
-				     ,(Time now printStringFormat:'%h:%m:%s'),' '
-				     ,'+0000 '
-				     ,(OperatingSystem getLoginName),' Exp $'.
-		    ].
-		    mgr updateVersionMethodOf:aClass for:newString.
-		]
-	    ].
-	].
+        rev withoutSpaces isEmpty ifTrue:[
+            msg := 'extracting newest %1 (' , (newestRev ? '???') , ')'.
+            "/ aStream := mgr getMostRecentSourceStreamForClassNamed:nm.
+            aStream := mgr getSourceStreamFor:classToCompare revision:newestRev.
+            revString := '(newest: ' , (newestRev ? '???') , ')'.
+        ] ifFalse:[
+            msg := 'extracting previous %1'.
+            aStream := mgr getSourceStreamFor:classToCompare revision:rev.
+            revString := rev
+        ].
+
+        aStream isNil ifTrue:[
+            self warn:'Could not extract source from repository (check repository settings / network)'.
+            ^ self
+        ].
+        aStream class readErrorSignal handle:[:ex |
+            self warn:('Read error while reading extracted source\\' , ex description) withCRs.
+            aStream close.
+            ^ self
+        ] do:[
+            comparedSource := aStream contents asString.
+        ].
+        aStream close.
+
+        self activityNotification:'generating current source...'.
+
+        currentSource := self sourceCodeOfClass:classToCompare.
+
+        self activityNotification:'comparing...'.
+
+        versionsAreTheSame := false.
+        comparedSource = currentSource ifTrue:[
+            versionsAreTheSame := true.
+        ] ifFalse:[
+            thisRevString := revisionInClass ? 'no revision'.
+
+            revString = '(newest)' ifTrue:[
+                (rev := mgr newestRevisionOf:classToCompare) notNil ifTrue:[
+                    revString := '(newest is ' , rev , ')'
+                ]
+            ].
+
+            self activityNotification:'comparing...'.
+
+            brwsr := (UserPreferences versionDiffViewerClass)
+                  openOnClass:classToCompare
+                  labelA:('Repository: ' , revString)
+                  sourceA:comparedSource
+                  labelB:('Current: (based on: ' , thisRevString , ')')
+                  sourceB:currentSource
+                  title:('Comparing ' , classToCompare name)
+                  ifSame:[versionsAreTheSame := true].
+
+            versionsAreTheSame ifFalse:[
+                brwsr classChangeSet 
+                    classBeingCompared:classToCompare;
+                    versionA:rev;
+                    versionB:rev , 'mod'.
+            ].
+        ].
+
+        versionsAreTheSame ifTrue:[
+            (classToCompare hasUnsavedChanges) ifTrue:[
+                (self confirm:(resources 
+                                stringWithCRs:'Versions of %1 are identical.\\Remove entries from changeSet ?'
+                                with:classToCompare name allBold)) ifTrue:[
+                    ChangeSet current condenseChangesForClass:classToCompare.
+                ].
+            ] ifFalse:[
+                self information:'Versions are identical.'.
+                ChangeSet current unrememberChangedClasses.
+            ].
+            revisionInClass isNil ifTrue:[
+                (Dialog confirm:'Update (Fix) the classes Revision Info ?' withCRs)
+                ifTrue:[
+                    |newString root|
+
+                    newString := mgr updatedRevisionStringOf:aClass forRevision:rev with:aClass revisionString.
+                    newString isNil ifTrue:[
+                        root := mgr getCVSROOTForModule:(aClass package upTo:$:).
+                        root := mgr repositoryTopDirectoryFromCVSRoot:root.
+                        newString := '$', 'Header: ',(root copyReplaceAll: $: with:$/ ),'/'
+                                     ,(Smalltalk fileNameForClass:aClass),'.st,v ',rev,' '
+                                     ,(Date today printStringFormat:'%y-%m-%d'),' '
+                                     ,(Time now printStringFormat:'%h:%m:%s'),' '
+                                     ,'+0000 '
+                                     ,(OperatingSystem getLoginName),' Exp $'.
+                    ].
+                    mgr updateVersionMethodOf:aClass for:newString.
+                ]
+            ].
+        ].
     ].
 
     "
@@ -2101,12 +2003,29 @@
     |diffSet|
 
     diffSet := self diffSetOfProject:aProject againstRepositoryVersionFrom:aDateOrNilForNewest.
-    VersionDiffBrowser
-	openOnDiffSet:diffSet
-	labelA:'Repository'
-	labelB:'Image'
-	title:('Differences of %1' bindWith:aProject)
-	ignoreExtensions:false.
+    VersionDiffBrowser 
+        openOnDiffSet:diffSet 
+        labelA:'Repository' 
+        labelB:'Image' 
+        title:('Differences of %1' bindWith:aProject)
+        ignoreExtensions:true
+        ignoreVersionMethods:true.
+
+    "Modified: / 12-09-2011 / 11:56:01 / cg"
+!
+
+compareProject:aProject withRepositoryVersionTaggedAs:aSymbolicName
+    |diffSet|
+
+    diffSet := self diffSetOfProject:aProject againstRepositoryVersionTaggedAs:aSymbolicName.
+
+    VersionDiffBrowser 
+        openOnDiffSet:diffSet 
+        labelA:'Repository ("',aSymbolicName,'")' 
+        labelB:'Image' 
+        title:('Differences of %1' bindWith:aProject)
+        ignoreExtensions:true
+        ignoreVersionMethods:true.
 
     "Modified: / 12-09-2011 / 11:56:01 / cg"
 !
@@ -2119,9 +2038,9 @@
     "let user specify the source-repository values for aClass.
      Return false, if failed."
 
-    ^ self
-	createSourceContainerForClass:aClass
-	usingManager:(self sourceCodeManagerFor:aClass).
+    ^ self 
+        createSourceContainerForClass:aClass
+        usingManager:(self sourceCodeManagerFor:aClass).
 
     "Modified: / 21-12-2011 / 18:31:49 / cg"
 !
@@ -2130,20 +2049,17 @@
     "let user specify the source-repository values for aClass.
      Return false, if failed."
 
-    |resources|
-
     aManager isNil ifTrue:[^ false].
 
-    resources := self classResources.
-    ^ self
-	defineSourceContainerForClass:aClass
-	usingManager:aManager
-	title:(resources string:'Repository information for %1' with:aClass name)
-	text:(resources string:'Create new %1-repository container for ''%2'''
-			    with:aManager managerTypeName
-			    with:aClass name allBold)
-	createDirectories:true
-	createContainer:true.
+    ^ self 
+        defineSourceContainerForClass:aClass
+        usingManager:aManager
+        title:(resources string:'Repository information for %1' with:aClass name)
+        text:(resources string:'Create new %1-repository container for ''%2''' 
+                            with:aManager managerTypeName
+                            with:aClass name allBold)
+        createDirectories:true
+        createContainer:true.
 
     "Created: / 21-12-2011 / 18:31:23 / cg"
 !
@@ -2152,12 +2068,12 @@
     "let user specify the source-repository values for aClass"
 
     ^ self
-	defineSourceContainerForClass:aClass
-	usingManager:(self sourceCodeManagerFor:aClass)
-	title:title
-	text:boxText
-	createDirectories:createDirs
-	createContainer:createContainer
+        defineSourceContainerForClass:aClass 
+        usingManager:(self sourceCodeManagerFor:aClass)
+        title:title 
+        text:boxText 
+        createDirectories:createDirs 
+        createContainer:createContainer
 
     "Modified: / 21-12-2011 / 18:34:44 / cg"
 !
@@ -2168,66 +2084,50 @@
     |className
      "oldModule oldPackage" oldFileName
      module directory fileName nameSpace nameSpacePrefix
-     info project nm creatingNew msg
-     answer doCheckinWithoutAsking forceCheckIn resources rslt note
+     info project nm creatingNew msg 
+     answer doCheckinWithoutAsking forceCheckIn rslt note
      requiredPackage|
 
     mgr isNil ifTrue:[^  false].
 
-    resources := self classResources.
     aClass isLoaded ifFalse:[
-	self warn:(resources string:'Please load the %1-class first' with:aClass name).
-	^ false.
+        self warn:(resources string:'Please load the %1-class first' with:aClass name).
+        ^ false.
     ].
 
     className := aClass name.
 
     aClass isProjectDefinition ifTrue:[
-	"/ no way - their package is already known and fix.
-	module := aClass module.
-	directory := aClass moduleDirectory.
+        "/ no way - their package is already known and fix.
+        module := aClass module.
+        directory := aClass moduleDirectory.
     ] ifFalse:[
-	"/JV@2012-07-23: The class may have package already defined!!!!!!
-	"/Try that package first!!
-	(aClass package notNil and:[aClass package ~~ Project noProjectID]) ifTrue:[
-	    | doubleCollon |
-
-	    doubleCollon := aClass package indexOf: $:.
-	    doubleCollon == 0 ifTrue:[
-		module := aClass package.
-		directory := nil.
-	    ] ifFalse:[
-		module := aClass package copyTo: doubleCollon - 1.
-		directory := aClass package copyFrom: doubleCollon + 1.
-	    ]
-	] ifFalse:[
-	    "/
-	    "/ defaults, if nothing at all is known
-	    "/
-	    (module := LastModule) isNil ifTrue:[
-		module := (OperatingSystem getLoginName).
-	    ].
-	    (directory := LastPackage) isNil ifTrue:[
-		directory := 'private'.
-	    ].
-	].
+        "/
+        "/ defaults, if nothing at all is known
+        "/
+        (module := LastModule) isNil ifTrue:[
+            module := (OperatingSystem getLoginName).
+        ].
+        (directory := LastPackage) isNil ifTrue:[
+            directory := 'private'.
+        ].
     ].
 
     "/
     "/ try to extract some useful defaults from the current project
     "/
     (Project notNil and:[(project := Project current) notNil]) ifTrue:[
-	directory isNil ifTrue:[
-	    (nm := project repositoryDirectory) isNil ifTrue:[
-		nm := project name
-	    ].
-	    directory := nm.
-	].
-	module isNil ifTrue:[
-	    (nm := project repositoryModule) notNil ifTrue:[
-		module := nm
-	    ]
-	].
+        directory isNil ifTrue:[
+            (nm := project repositoryDirectory) isNil ifTrue:[
+                nm := project name
+            ].
+            directory := nm.
+        ].
+        module isNil ifTrue:[
+            (nm := project repositoryModule) notNil ifTrue:[
+                module := nm
+            ]
+        ].
     ].
 
     "/
@@ -2236,23 +2136,23 @@
     "/
     info := mgr sourceInfoOfClass:aClass.
     info notNil ifTrue:[
-	true "module ~= LastModule" ifTrue:[
-	    (info includesKey:#module) ifTrue:[
-		module := (info at:#module).
-	    ].
-	].
+        true "module ~= LastModule" ifTrue:[
+            (info includesKey:#module) ifTrue:[
+                module := (info at:#module).
+            ].
+        ].
 "/        true "package ~= LastPackage" ifTrue:[
 "/            (info includesKey:#directory) ifTrue:[
 "/                package := (info at:#directory).
 "/            ].
 "/        ].
-	fileName := mgr containerFromSourceInfo:info.
-	(nameSpace := aClass nameSpace) ~~ Smalltalk ifTrue:[
-	    nameSpacePrefix := nameSpace name , '::'.
-	    (fileName startsWith:nameSpacePrefix) ifTrue:[
-		fileName := fileName copyFrom:(nameSpacePrefix size + 1).
-	    ]
-	].
+        fileName := mgr containerFromSourceInfo:info.
+        (nameSpace := aClass nameSpace) ~~ Smalltalk ifTrue:[
+            nameSpacePrefix := nameSpace name , '::'.
+            (fileName startsWith:nameSpacePrefix) ifTrue:[
+                fileName := fileName copyFrom:(nameSpacePrefix size + 1).
+            ]
+        ].
 "/        (info includesKey:#fileName) ifTrue:[
 "/            fileName := (info at:#fileName).
 "/        ] ifFalse:[
@@ -2267,12 +2167,12 @@
     ].
 
     fileName isNil ifTrue:[
-	fileName := (Smalltalk fileNameForClass:aClass) , '.st'.
+        fileName := (Smalltalk fileNameForClass:aClass) , '.st'.
     ].
 
     OperatingSystem isMSDOSlike ifTrue:[
-	module replaceAll:$\ with:$/.
-	directory replaceAll:$\ with:$/.
+        module replaceAll:$\ with:$/.
+        directory replaceAll:$\ with:$/.
     ].
 
     "/
@@ -2281,7 +2181,7 @@
     doCheckinWithoutAsking := false.
 "/false ifTrue:[
 "/    (mgr checkForExistingContainer:fileName inModule:module directory:directory) ifTrue:[
-"/        answer := Dialog confirmWithCancel:(resources
+"/        answer := Dialog confirmWithCancel:(resources 
 "/                            string:'About to change the source container.
 "/
 "/Notice: there is a container for %1 in:
@@ -2307,37 +2207,37 @@
 "/    ].
 "/].
     mgr isContainerBased ifTrue:[
-	doCheckinWithoutAsking ifFalse:[
-	    "/
-	    "/ open a dialog for this
-	    "/
-	    (mgr checkForExistingContainer:fileName inModule:module directory:directory) ifFalse:[
-		note := 'Notice: class seems to have no container yet.'.
-		creatingNew := true.
-	    ] ifTrue:[
-		creatingNew := false.
-	    ].
-	    confirmNewFiles ifTrue:[
-		rslt := self
-			    askForContainer:boxText title:title note:note
-			    initialModule:module initialPackage:directory initialFileName:fileName
-			    forNewContainer:true.
-
-		rslt isNil ifTrue:[
-		    ^ false
-		].
-
-		module := rslt at:#module.
-		directory := rslt at:#package.
-		fileName := rslt at:#fileName.
-	    ]
-	].
-	(fileName endsWith:',v') ifTrue:[
-	    fileName := fileName copyWithoutLast:2
-	].
-	(fileName endsWith:'.st') ifFalse:[
-	    fileName := fileName , '.st'
-	].
+        doCheckinWithoutAsking ifFalse:[
+            "/
+            "/ open a dialog for this
+            "/
+            (mgr checkForExistingContainer:fileName inModule:module directory:directory) ifFalse:[
+                note := 'Notice: class seems to have no container yet.'.
+                creatingNew := true.
+            ] ifTrue:[
+                creatingNew := false.
+            ].
+            confirmNewFiles ifTrue:[
+                rslt := self 
+                            askForContainer:boxText title:title note:note
+                            initialModule:module initialPackage:directory initialFileName:fileName
+                            forNewContainer:true.        
+
+                rslt isNil ifTrue:[
+                    ^ false
+                ].
+
+                module := rslt at:#module.
+                directory := rslt at:#package.
+                fileName := rslt at:#fileName.
+            ]
+        ].
+        (fileName endsWith:',v') ifTrue:[
+            fileName := fileName copyWithoutLast:2
+        ].
+        (fileName endsWith:'.st') ifFalse:[
+            fileName := fileName , '.st'
+        ].
 
     ].
 
@@ -2352,45 +2252,45 @@
 "/                ^ false
 "/            ]
 "/        ].
-	aClass instAndClassSelectorsAndMethodsDo:[:sel :mthd | mthd setPackage:requiredPackage].
-	aClass package:requiredPackage.
+        aClass instAndClassSelectorsAndMethodsDo:[:sel :mthd | mthd setPackage:requiredPackage].
+        aClass package:requiredPackage.
     ].
 
     info := aClass revisionInfo.
     info notNil ifTrue:[
-	(info repositoryPathName isNil) ifTrue:[
-	    info := nil
-	].
+        (info repositoryPathName isNil) ifTrue:[
+            info := nil
+        ].
 "/        (info includesKey:#repositoryPathName) ifFalse:[
 "/            info := nil
 "/        ]
     ].
 
     info isNil ifTrue:[
-	true "doCheckinWithoutAsking" ifFalse:[
-	    answer := Dialog
-		 confirmWithCancel:(resources string:'%1 does not have any (usable) revision info (#version method)\\Shall I create one ?' with:className) withCRs
-		 labels:(resources array:#( 'Cancel' 'No' 'Yes')).
-	    answer isNil ifTrue:[^ false].
-	] ifTrue:[
-	    answer := true.
-	].
-	answer ifTrue:[
-	    mgr
-		updateVersionMethodOf:aClass
-		for:(mgr initialRevisionStringFor:aClass
-			 inModule:module
-			 directory:directory
-			 container:fileName).
-	].
+        true "doCheckinWithoutAsking" ifFalse:[
+            answer := Dialog 
+                 confirmWithCancel:(resources string:'%1 does not have any (usable) revision info (#version method)\\Shall I create one ?' with:className) withCRs
+                 labels:(resources array:#( 'Cancel' 'No' 'Yes')).
+            answer isNil ifTrue:[^ false].
+        ] ifTrue:[
+            answer := true.
+        ].
+        answer ifTrue:[
+            mgr
+                updateVersionMethodOf:aClass 
+                for:(mgr initialRevisionStringFor:aClass 
+                         inModule:module 
+                         directory:directory 
+                         container:fileName).
+        ].
     ].
 
     (self checkForExistingModule:module usingManager:mgr allowCreate:(createDirs or:[creatingNew]))
-	ifFalse:[^ false].
+        ifFalse:[^ false].
     LastModule := module.
 
     (self checkForExistingModule:module directory:directory usingManager:mgr allowCreate:(createDirs or:[creatingNew]))
-	ifFalse:[^ false].
+        ifFalse:[^ false].
     LastPackage := directory.
 
     "/
@@ -2407,117 +2307,137 @@
 "/                ^ false.
 "/            ].
 
-	mgr isContainerBased ifTrue:[
-	    creatingNew ifTrue:[
-		self warn:(resources string:'Container for %1 already exists in %2/%3.' with:fileName with:module with:directory) withCRs.
-	    ].
-
-	    doCheckinWithoutAsking ifFalse:[
-		(Dialog
-		    confirm:(resources string:'check %1 into the existing container
+        mgr isContainerBased ifTrue:[
+            creatingNew ifTrue:[
+                self warn:(resources string:'Container for %1 already exists in %2/%3.' with:fileName with:module with:directory) withCRs.
+            ].
+
+            doCheckinWithoutAsking ifFalse:[
+                (Dialog 
+                    confirm:(resources string:'check %1 into the existing container
 
     %2 / %3 / %4  ?'
-				    with:className
-				    with:module
-				    with:directory
-				    with:fileName) withCRs
-		    noLabel:'Cancel')
-		ifFalse:[
-		    ^ false.
-		].
-	    ].
-	].
-
-	mgr
-	    updateVersionMethodOf:aClass
-	    for:('$' , 'Header' , '$'). "/ concatenated to avoid RCS-expansion
-
-	oldFileName notNil ifTrue:[
-	    msg := ('forced checkin / source container change from ' , oldFileName).
-	] ifFalse:[
-	    msg := 'defined source container'
-	].
-
-	(forceCheckIn := doCheckinWithoutAsking) ifFalse:[
-	    (mgr
-		checkinClass:aClass
-		fileName:fileName
-		directory:directory
-		module:module
-		logMessage:msg)
-	    ifFalse:[
-		doCheckinWithoutAsking ifFalse:[
-		    (Dialog
-			confirm:'No easy merge seems possible; force checkin (no merge) ?'
-			noLabel:'Cancel')
-		    ifFalse:[
-			^ false.
-		    ].
-		].
-		forceCheckIn := true.
-	    ]
-	].
-	forceCheckIn ifTrue:[
-	    (mgr
-		checkinClass:aClass
-		fileName:fileName
-		directory:directory
-		module:module
-		logMessage:msg
-		force:true)
-	    ifFalse:[
-		self warn:(resources string:'Failed to check into existing container.').
-		^ false.
-	    ].
-	].
-	^ true
+                                    with:className
+                                    with:module 
+                                    with:directory 
+                                    with:fileName) withCRs
+                    noLabel:'Cancel') 
+                ifFalse:[
+                    ^ false.
+                ].  
+            ].  
+        ].
+
+        mgr 
+            updateVersionMethodOf:aClass 
+            for:('$' , 'Header' , '$'). "/ concatenated to avoid RCS-expansion
+
+        oldFileName notNil ifTrue:[
+            msg := ('forced checkin / source container change from ' , oldFileName).
+        ] ifFalse:[
+            msg := 'defined source container'
+        ].
+
+        (forceCheckIn := doCheckinWithoutAsking) ifFalse:[
+            (mgr
+                checkinClass:aClass 
+                fileName:fileName 
+                directory:directory 
+                module:module 
+                logMessage:msg)
+            ifFalse:[
+                doCheckinWithoutAsking ifFalse:[
+                    (Dialog 
+                        confirm:'No easy merge seems possible; force checkin (no merge) ?'
+                        noLabel:'Cancel') 
+                    ifFalse:[
+                        ^ false.
+                    ].
+                ].
+                forceCheckIn := true.
+            ]
+        ].
+        forceCheckIn ifTrue:[
+            (mgr
+                checkinClass:aClass 
+                fileName:fileName 
+                directory:directory 
+                module:module 
+                logMessage:msg
+                force:true)
+            ifFalse:[
+                self warn:(resources string:'Failed to check into existing container.').
+                ^ false.
+            ].
+        ].
+        ^ true
     ] ifFalse:[
-	(createContainer or:[creatingNew]) ifFalse:[
-	    (Dialog
-		 confirm:(resources string:'No container exists for %1 in %2/%3\\create ?'
-				      with:fileName with:module with:directory) withCRs
-		 noLabel:'Cancel') ifFalse:[
-		^ false
-	    ]
-	]
+        (createContainer or:[creatingNew]) ifFalse:[
+            (Dialog
+                 confirm:(resources string:'No container exists for %1 in %2/%3\\create ?' 
+                                      with:fileName with:module with:directory) withCRs
+                 noLabel:'Cancel') ifFalse:[
+                ^ false
+            ]
+        ]
     ].
 
     aClass instAndClassSelectorsAndMethodsDo:[:sel :mthd | mthd setPackage:requiredPackage].
     aClass package:requiredPackage.
 
     (mgr
-	createContainerFor:aClass
-	inModule:module
-	package:directory
-	container:fileName
+        createContainerFor:aClass
+        inModule:module
+        package:directory
+        container:fileName
     ) ifFalse:[
-	self warn:(resources string:'Failed to create container.').
-	^ false.
+        self warn:(resources string:'Failed to create container.').
+        ^ false.
     ].
     ^ true
 
     "Created: / 21-12-2011 / 18:34:02 / cg"
-    "Modified: / 23-07-2012 / 17:44:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 diffSetOfProject:aProject againstRepositoryVersionFrom:aDateOrNilForNewest
-    |classesInImage filesInImage module directory perProjectInfo
+    ^ self
+        diffSetOfProject:aProject 
+        againstRepositoryVersionFrom:aDateOrNilForNewest
+        orTag:nil
+!
+
+diffSetOfProject:aProject againstRepositoryVersionFrom:aDateOrNilForNewest orTag:aTagOrNil
+    "return a diffset against either the newest (head), or the version at a particular date,
+     or a the version with a particular tag."
+
+    |classesInImage filesInImage module directory perProjectInfo 
      classesNotInRepository filesNotInImage classesDeletedInRepository
-     classesModifiedInImage classesNotReallyModified classesReallyModified classesModifiedInRepository
+     classesModifiedInImage classesNotReallyModified classesReallyModified classesNewerInRepository 
      classesAddedInImage extensionMethods extensionsInImage extensionsInRepository extensionDiffs
-     box doCleanup resources diffSet def autoloadedFilesNotInImage
-     autoloadedClassesInImage autoloadedFilesInImage|
-
-    resources := self classResources.
+     box doCleanup diffSet def autoloadedFilesNotInImage 
+     autoloadedClassesInImage autoloadedFilesInImage versionMethodsAndDoitsRejected|
 
     module := aProject asPackageId module.
     directory := aProject asPackageId directory.
 
-    perProjectInfo := SourceCodeManager revisionsInModule:module directory:directory fromDate:aDateOrNilForNewest.
+    (aDateOrNilForNewest isNil and:[ aTagOrNil notNil ]) ifTrue:[
+        perProjectInfo := SourceCodeManager revisionsInModule:module directory:directory taggedAs:aTagOrNil.
+    ] ifFalse:[
+        perProjectInfo := SourceCodeManager revisionsInModule:module directory:directory fromDate:aDateOrNilForNewest.
+    ].
     perProjectInfo := perProjectInfo ? #().
     perProjectInfo := perProjectInfo select:[:info | info key asFilename hasSuffix:'st'].
     perProjectInfo := Dictionary withAssociations:perProjectInfo.
 
+    "/ to ignore version_xxx methods
+    versionMethodsAndDoitsRejected := 
+        [:aChangeSet | 
+            aChangeSet reject:[:chg | 
+                false "chg isMethodChangeForVersionMethod" 
+                or:[false "chg isMethodChangeForExtensionsVersionMethod"
+                or:[chg isDoIt]]]
+        ].
+
     classesInImage := Smalltalk allClassesInPackage:aProject.
     autoloadedClassesInImage := classesInImage reject:[:cls | cls isLoaded].
     classesInImage := classesInImage select:[:cls | cls isLoaded and:[cls isPrivate not]].
@@ -2535,9 +2455,16 @@
     classesModifiedInImage := classesInImage select:[:cls | ChangeSet current includesChangeForClassOrMetaclass:cls].
     classesModifiedInImage := classesModifiedInImage \ classesNotInRepository.
 
-    classesModifiedInRepository := classesInImage select:[:cls | |v|
-						    v := (perProjectInfo at:cls classBaseFilename ifAbsent:nil).
-						    v notNil and:[ cls isLoaded and:[ v > cls revision ]]].
+    classesNewerInRepository := classesInImage 
+                                    select:[:cls | 
+                                        |v clsRevision|
+
+                                        v := (perProjectInfo at:cls classBaseFilename ifAbsent:nil).
+                                        v notNil 
+                                            and:[ cls isLoaded 
+                                            and:[ (clsRevision := cls revision) notNil 
+                                            and:[ v > clsRevision ]]]
+                                    ].
 
     "/ stupid: as we do not have any revision information for extensions (sigh);
     "/ we must checkout and look at the extension.st contents, to see if it has changed.
@@ -2546,186 +2473,222 @@
     extensionsInImage := ChangeSet forExistingMethods:extensionMethods.
 
     [
-	|s extensionsRevision|
-
-	extensionsRevision := perProjectInfo at:'extensions.st' ifAbsent:#newest.
-	s := SourceCodeManager
-		streamForClass:nil fileName:'extensions.st' revision:extensionsRevision
-		directory:directory module:module cache:true.
-	s isNil ifTrue:[
-	    extensionsInRepository := ChangeSet new.
-	] ifFalse:[
-	    extensionsInRepository := ChangeSet fromStream:s.
-	    s close.
-	].
+        |s extensionsRevision|
+
+        extensionsRevision := perProjectInfo at:'extensions.st' ifAbsent:#newest.
+        [
+            s := SourceCodeManager
+                    streamForClass:nil fileName:'extensions.st' revision:extensionsRevision 
+                    directory:directory module:module cache:true.
+            s notNil ifTrue:[
+                extensionsInRepository := ChangeSet fromStream:s.
+            ].
+        ] ensure:[
+            s notNil ifTrue:[s close]
+        ].
+        extensionsInRepository isNil ifTrue:[extensionsInRepository := ChangeSet new].
+
+        "/ ignore package doIts and all extensionVersion_xxx methods
+        extensionsInRepository := versionMethodsAndDoitsRejected value:extensionsInRepository.
     ] value.
     extensionDiffs := extensionsInRepository diffSetsAgainst:extensionsInImage.
 
     diffSet := extensionDiffs copy.
 
-    aDateOrNilForNewest isNil ifTrue:[
-	"/ we could do the same as above for each class.
-	"/ however - as we do have change-info and revision info, we can avoid checking out
-	"/ for all classes which are not changed and which have the same version info.
-	classesModifiedInImage notEmpty ifTrue:[
-	    classesReallyModified :=
-		classesModifiedInImage select:[:eachChangedClass |
-		    |currentVersion repositoryVersion s stFile diffs|
-
-		    stFile := eachChangedClass classBaseFilename.
-		    s := SourceCodeManager
-			streamForClass:nil fileName:stFile revision:#newest
-			directory:directory module:module cache:true.
-		    repositoryVersion := ChangeSet fromStream:s.
-		    s close.
-
-		    currentVersion := ChangeSet forExistingClass:eachChangedClass.
-		    diffs := repositoryVersion diffSetsAgainst:currentVersion .
-		    diffSet addDiffSet:diffs.
-		    diffs notEmpty
-		].
-
-	    classesNotReallyModified := classesModifiedInImage \ classesReallyModified.
-	].
+    (aDateOrNilForNewest isNil and:[aTagOrNil isNil]) ifTrue:[
+        "/ we could do the same as below for each class.
+        "/ however - as we do have change-info and revision info, we can avoid checking out
+        "/ for all classes which are not changed and which have the same version info.
+        classesModifiedInImage notEmpty ifTrue:[
+            classesReallyModified :=
+                classesModifiedInImage select:[:eachChangedClass |
+                    |currentVersion repositoryVersion s stFile diffs|
+
+                    stFile := eachChangedClass classBaseFilename.
+                    [    
+                        s := SourceCodeManager
+                                streamForClass:nil fileName:stFile revision:#newest 
+                                directory:directory module:module cache:true.
+                        s notNil ifTrue:[
+                            repositoryVersion := ChangeSet fromStream:s.
+                        ].
+                    ] ensure:[
+                        s notNil ifTrue:[s close].
+                    ].
+                    repositoryVersion isNil ifTrue:[ repositoryVersion := ChangeSet new ].
+                    repositoryVersion := versionMethodsAndDoitsRejected value:repositoryVersion.
+
+                    currentVersion := ChangeSet forExistingClass:eachChangedClass withExtensions:false withLooseMethods:true.
+                    currentVersion := versionMethodsAndDoitsRejected value:currentVersion.
+                    diffs := repositoryVersion diffSetsAgainst:currentVersion .
+                    diffSet addDiffSet:diffs.
+                    diffs notEmpty
+                ].
+
+            classesNotReallyModified := classesModifiedInImage \ classesReallyModified.
+        ].
     ] ifFalse:[
-	classesReallyModified :=
-	    classesInImage select:[:eachClass |
-		|currentVersion repositoryVersion s stFile stRevision diffs|
-
-		stFile := eachClass classBaseFilename.
-		stRevision := perProjectInfo at:stFile ifAbsent:#newest.
-
-		s := SourceCodeManager
-			streamForClass:nil fileName:stFile revision:stRevision
-			directory:directory module:module cache:true.
-		s isNil ifTrue:[
-		    repositoryVersion := ChangeSet new.
-		] ifFalse:[
-		    repositoryVersion := ChangeSet fromStream:s.
-		    s close.
-		].
-
-		currentVersion := ChangeSet forExistingClass:eachClass.
-		diffs := repositoryVersion diffSetsAgainst:currentVersion .
-		diffSet addDiffSet:diffs.
-		diffs notEmpty
-	    ].
+        classesReallyModified :=
+            classesInImage select:[:eachClass |
+                |currentVersion repositoryVersion s stFile stRevision diffs|
+
+                stFile := eachClass classBaseFilename.
+                stRevision := perProjectInfo at:stFile ifAbsent:nil.
+                stRevision notNil ifTrue:[
+                    [
+                        s := SourceCodeManager
+                                streamForClass:nil fileName:stFile revision:stRevision 
+                                directory:directory module:module cache:true.
+                        s notNil ifTrue:[
+                            repositoryVersion := ChangeSet fromStream:s.
+                        ].
+                    ] ensure:[
+                        s notNil ifTrue:[s close].
+                    ].
+                ].
+                repositoryVersion isNil ifTrue:[
+                    repositoryVersion := ChangeSet new.
+                ].
+                repositoryVersion := versionMethodsAndDoitsRejected value:repositoryVersion.
+
+                currentVersion := ChangeSet forExistingClass:eachClass withExtensions:false withLooseMethods:true.
+                currentVersion := versionMethodsAndDoitsRejected value:currentVersion.
+                diffs := repositoryVersion diffSetsAgainst:currentVersion .
+                diffSet addDiffSet:diffs.
+                diffs notEmpty
+            ].
     ].
 
     filesNotInImage notEmpty ifTrue:[
-	"/ first, check if these are autoloaded classes which have NOT been installed
-	"/ (for example, due to a --quick argument during startup)
-	autoloadedFilesNotInImage := OrderedCollection new.
-
-	def := ProjectDefinition definitionClassForPackage:aProject createIfAbsent:false projectType:nil.
-	def notNil ifTrue:[
-	    def classNamesAndAttributesDo:[:eachClassname :eachAttributes |
-		|cls eachFileName isAutoload|
-
-		cls := Smalltalk classNamed:eachClassname.
-		cls isNil ifTrue:[
-		    isAutoload := eachAttributes includes:#autoload.
-		    isAutoload ifTrue:[
-			eachFileName := Smalltalk fileNameForClass:eachClassname.
-			autoloadedFilesNotInImage add:(eachFileName , '.st')
-		    ]
-		]
-	    ].
-	].
-
-	(filesNotInImage \ autoloadedFilesNotInImage) do:[:eachSTFile |
-	    |s chgSet classDefinitions|
-
-	    s := SourceCodeManager
-		streamForClass:nil fileName:eachSTFile revision:#newest directory:directory module:module cache:true.
-	    chgSet := ChangeSet fromStream:s.
-	    s close.
-
-	    diffSet onlyInReceiver addAll:chgSet
-	].
+        "/ first, check if these are autoloaded classes which have NOT been installed
+        "/ (for example, due to a --quick argument during startup)
+        autoloadedFilesNotInImage := OrderedCollection new.
+
+        def := ProjectDefinition definitionClassForPackage:aProject createIfAbsent:false projectType:nil.
+        def notNil ifTrue:[
+            def classNamesAndAttributesDo:[:eachClassname :eachAttributes | 
+                |cls eachFileName isAutoload|
+
+                cls := Smalltalk classNamed:eachClassname.
+                cls isNil ifTrue:[
+                    isAutoload := eachAttributes includes:#autoload.
+                    isAutoload ifTrue:[
+                        eachFileName := Smalltalk fileNameForClass:eachClassname.
+                        autoloadedFilesNotInImage add:(eachFileName , '.st')
+                    ]
+                ]
+            ].
+        ].
+
+        (filesNotInImage \ autoloadedFilesNotInImage) do:[:eachSTFile |
+            |s chgSet classDefinitions|
+
+            [
+                s := SourceCodeManager
+                        streamForClass:nil fileName:eachSTFile revision:#newest directory:directory module:module cache:true.
+                chgSet := ChangeSet fromStream:s.
+            ] ensure:[
+                s notNil ifTrue:[s close].
+            ].
+            chgSet := versionMethodsAndDoitsRejected value:chgSet.
+            diffSet onlyInReceiver addAll:chgSet
+        ].
     ].
 
-    classesModifiedInRepository notEmpty ifTrue:[
-	classesModifiedInRepository do:[:eachClass|
-	    |s diffs repositoryVersion currentVersion|
-
-	    s := SourceCodeManager
-		streamForClass:eachClass fileName:nil revision:#newest directory:directory module:module cache:true.
-	    repositoryVersion := ChangeSet fromStream:s.
-	    s close.
-
-	    currentVersion := ChangeSet forExistingClass:eachClass.
-	    diffs := repositoryVersion diffSetsAgainst:currentVersion .
-	    diffSet addDiffSet:diffs.
-	].
+    classesNewerInRepository notEmpty ifTrue:[
+        classesNewerInRepository do:[:eachClass|
+            |s diffs repositoryVersion currentVersion|
+
+            [
+                s := SourceCodeManager
+                        streamForClass:eachClass fileName:nil revision:#newest directory:directory module:module cache:true.
+                repositoryVersion := ChangeSet fromStream:s.
+            ] ensure:[
+                s notNil ifTrue:[s close].
+            ].
+
+            currentVersion := ChangeSet forExistingClass:eachClass withExtensions:false withLooseMethods:true.
+            currentVersion := versionMethodsAndDoitsRejected value:currentVersion.
+            diffs := repositoryVersion diffSetsAgainst:currentVersion .
+            diffSet addDiffSet:diffs.
+        ].
     ].
+
     classesDeletedInRepository notEmpty ifTrue:[
 "/ self halt.
     ].
     classesNotInRepository notEmpty ifTrue:[
-	"/ if there are no changeSet entries for those classes, they seem to be
-	"/ no longer in the repository (possibly moved ?)
-	"/ If there are entries, these might have been added in the image and need a check-in
-
-	classesAddedInImage := classesNotInRepository \ classesDeletedInRepository.
-	classesAddedInImage do:[:eachAddedClass |
-	    |currentVersion|
-
-	    currentVersion := ChangeSet forExistingClass:eachAddedClass.
-	    diffSet onlyInArg addAll:currentVersion.
-	].
+        "/ if there are no changeSet entries for those classes, they seem to be
+        "/ no longer in the repository (possibly moved ?)
+        "/ If there are entries, these might have been added in the image and need a check-in
+
+        classesAddedInImage := classesNotInRepository \ classesDeletedInRepository.
+        classesAddedInImage do:[:eachAddedClass |
+            |currentVersion|
+
+            currentVersion := ChangeSet forExistingClass:eachAddedClass withExtensions:false withLooseMethods:true.
+            currentVersion := versionMethodsAndDoitsRejected value:currentVersion.
+            diffSet onlyInArg addAll:currentVersion.
+        ].
     ].
 
     diffSet isEmpty ifTrue:[
-	"/ Dialog information:(resources string:'%1 is up-to-date.' with:eachProject allBold).
-	Transcript showCR:('%1 is up-to-date.' bindWith:aProject allBold).
-	(ChangeSet current includesChangeForPackage:aProject) ifTrue:[
-	    (Dialog confirm:('%1 is up-to-date.\\Cleanup ChangeSet ?' bindWith:aProject allBold) withCRs) ifTrue:[
-		ChangeSet current condenseChangesForPackage:aProject.
-	    ].
-	].
-	^ diffSet.
+        "/ Dialog information:(resources string:'%1 is up-to-date.' with:eachProject allBold).
+        Transcript showCR:('%1 is up-to-date.' bindWith:aProject allBold).
+        (ChangeSet current includesChangeForPackage:aProject) ifTrue:[
+            (Dialog confirm:('%1 is up-to-date.\\Cleanup ChangeSet ?' bindWith:aProject allBold) withCRs) ifTrue:[
+                ChangeSet current condenseChangesForPackage:aProject.
+            ].
+        ].
+        ^ diffSet.
     ].
 
     "/ as a side-effect, if we find that some classes are modified but the same as in the repository,
     "/ give user a chance to cleanup the changeSet here.
     aDateOrNilForNewest isNil ifTrue:[
-	classesNotReallyModified notEmptyOrNil ifTrue:[
-	    doCleanup := false.
-	    box := Dialog
-		forRequestText:(resources
-				    stringWithCRs:'The following classes from %1 are equal to the repository version.\\Remove entries from the changeSet ?'
-				    with:aProject allBold)
-		editViewClass:ListView
-		lines:10 columns:20
-		initialAnswer:nil model:nil
-		setupWith:
-		   [:v :d |
-			    |removeButton|
-
-			    v list:classesNotReallyModified.
-			    removeButton := Button label:(resources string:'Cleanup ChangeSet').
-			    removeButton action:[ doCleanup := true. box okPressed. ].
-			    d addButton:removeButton after:(d okButton).
-			    d okButton label:(resources string:'Continue').
-			    d okButton isReturnButton:false.
-			    removeButton isReturnButton:true.
-		   ].
-	    box open.
-	    box accepted ifTrue:[
-		doCleanup ifTrue:[
-		    classesNotReallyModified do:[:class |
-			ChangeSet current condenseChangesForClass:class.
-		    ]
-		].
-	    ]
-	].
+        classesNotReallyModified notEmptyOrNil ifTrue:[
+            doCleanup := false.
+            box := Dialog
+                forRequestText:(resources 
+                                    stringWithCRs:'The following classes from %1 are equal to the repository version.\\Remove entries from the changeSet?'
+                                    with:aProject allBold) 
+                editViewClass:ListView
+                lines:10 columns:20 
+                initialAnswer:nil model:nil
+                setupWith:
+                   [:v :d | 
+                            |removeButton|
+
+                            v list:classesNotReallyModified.
+                            removeButton := Button label:(resources string:'Cleanup ChangeSet').
+                            removeButton action:[ doCleanup := true. box okPressed. ].
+                            d addButton:removeButton after:(d okButton).
+                            d okButton label:(resources string:'Continue').
+                            d okButton isReturnButton:false.
+                            removeButton isReturnButton:true.
+                   ].
+            box open.
+            box accepted ifTrue:[
+                doCleanup ifTrue:[
+                    classesNotReallyModified do:[:class |
+                        ChangeSet current condenseChangesForClass:class.
+                    ]
+                ].
+            ]
+        ].
     ].
     ^ diffSet
 
     "Modified: / 01-11-2010 / 21:02:52 / cg"
 !
 
+diffSetOfProject:aProject againstRepositoryVersionTaggedAs:symbolicName
+    ^ self
+        diffSetOfProject:aProject 
+        againstRepositoryVersionFrom:nil
+        orTag:symbolicName
+!
+
 ensureCorrectVersionMethodsInClass:aClass usingManager:aManager
     |theMetaclass src newSrc versionMethodName oldVersionMethodName|
 
@@ -2735,28 +2698,28 @@
 
     (theMetaclass includesSelector:versionMethodName) ifTrue:[
 "/        (theMetaclass includesSelector:oldVersionMethodName) ifTrue:[
-"/            theMetaclass removeSelector:oldVersionMethodName.
+"/            theMetaclass removeSelector:oldVersionMethodName.   
 "/        ].
-	"/ ensure that my version method is parsable (contains $'s)
-	src := (theMetaclass compiledMethodAt:versionMethodName) source.
-	src notNil ifTrue:[
-	    newSrc := aManager ensureDollarsInVersionMethod:src.
-	    newSrc ~= src ifTrue:[
-		theMetaclass compile:newSrc.
-	    ]
-	].
+        "/ ensure that my version method is parsable (contains $'s)
+        src := (theMetaclass compiledMethodAt:versionMethodName) source.
+        src notNil ifTrue:[
+            newSrc := aManager ensureDollarsInVersionMethod:src.
+            newSrc ~= src ifTrue:[
+                theMetaclass compile:newSrc.
+            ]
+        ].
     ] ifFalse:[
-	(theMetaclass includesSelector:oldVersionMethodName) ifTrue:[
-	    "/ but make sure, it is a version method for this sourcecodemanager...
-	    (theMetaclass methodDictionary keys count:[:sel | sel startsWith:'version']) size == 1 ifTrue:[
-		src := (theMetaclass compiledMethodAt:oldVersionMethodName) source.
-		(src startsWith:oldVersionMethodName) ifTrue:[
-		    newSrc := versionMethodName
-			      , (src copyFrom:(oldVersionMethodName size + 1))
-		].
-		theMetaclass compile:newSrc.
-	    ]
-	].
+        (theMetaclass includesSelector:oldVersionMethodName) ifTrue:[
+            "/ but make sure, it is a version method for this sourcecodemanager...
+            (theMetaclass methodDictionary keys count:[:sel | sel startsWith:'version']) size == 1 ifTrue:[
+                src := (theMetaclass compiledMethodAt:oldVersionMethodName) source.
+                (src startsWith:oldVersionMethodName) ifTrue:[
+                    newSrc := versionMethodName 
+                              , (src copyFrom:(oldVersionMethodName size + 1))
+                ].
+                theMetaclass compile:newSrc.
+            ]
+        ].
     ].
 
     "Modified: / 20-08-2011 / 14:40:27 / cg"
@@ -2767,30 +2730,30 @@
     "returns 2 values"
 
     |initialLogMessage checkinInfo logMessage|
-
+    
     "/ heuristics for a useful initial log message...
     aLogInfoOrNil isNil ifTrue:[
-	initialLogMessage := (self goodInitialLogMessageForCheckinClassOfClass:aClass) ? ''.
-	"/ initial checkin ?
-	(aClass package isNil or:[aClass revision isNil]) ifTrue:[
-	    initialLogMessage := 'initial checkin\\' withCRs , initialLogMessage
-	].
-	checkinInfo := self
-			getCheckinInfoFor:aClass name
-			initialAnswer:initialLogMessage.
-	checkinInfo isNil ifTrue:[^ false].
-	logMessage := checkinInfo logMessage.
+        initialLogMessage := (self goodInitialLogMessageForCheckinClassOfClass:aClass) ? ''.
+        "/ initial checkin ?
+        (aClass package isNil or:[aClass revision isNil]) ifTrue:[ 
+            initialLogMessage := 'initial checkin\\' withCRs , initialLogMessage
+        ].
+        checkinInfo := self 
+                        getCheckinInfoFor:aClass name 
+                        initialAnswer:initialLogMessage.
+        checkinInfo isNil ifTrue:[^ false].
+        logMessage := checkinInfo logMessage.
     ] ifFalse:[
-	aLogInfoOrNil isString ifTrue:[
-	    "soon obsolete..."
-	    logMessage := aLogInfoOrNil
-	] ifFalse:[
-	    checkinInfo := aLogInfoOrNil.
-	    logMessage := checkinInfo logMessage.
-	].
+        aLogInfoOrNil isString ifTrue:[
+            "soon obsolete..."    
+            logMessage := aLogInfoOrNil
+        ] ifFalse:[ 
+            checkinInfo := aLogInfoOrNil.
+            logMessage := checkinInfo logMessage.
+        ].
     ].
-    logMessage notNil ifTrue:[
-	logMessage := logMessage asSingleByteStringReplaceInvalidWith:$?
+    logMessage notNil ifTrue:[  
+        logMessage := logMessage asSingleByteStringReplaceInvalidWith:$?
     ].
     aBlock value:logMessage value:checkinInfo.
     ^ true
@@ -2805,15 +2768,13 @@
 removeSourceContainerForClass:aClass confirm:doConfirm warn:doWarn
     "show container & optionally let user confirm twice."
 
-    |module directory fileName info mgr resources|
-
-    resources := self classResources.
+    |module directory fileName info mgr|
 
     aClass isLoaded ifFalse:[
-	doWarn ifTrue:[
-	    self warn:(resources string:'Please load the class first.').
-	].
-	^ false.
+        doWarn ifTrue:[
+            self warn:(resources string:'Please load the class first.').
+        ].
+        ^ false.
     ].
 
     "/
@@ -2822,79 +2783,79 @@
     "/
     mgr := self sourceCodeManagerFor:aClass.
     mgr isNil ifTrue:[
-	^ false
+        ^ false
     ].
 
     info := mgr sourceInfoOfClass:aClass.
     info notNil ifTrue:[
-	(info includesKey:#module) ifTrue:[
-	    module := (info at:#module).
-	].
-	(info includesKey:#directory) ifTrue:[
-	    directory := (info at:#directory).
-	].
-	fileName := mgr containerFromSourceInfo:info.
+        (info includesKey:#module) ifTrue:[
+            module := (info at:#module).
+        ].
+        (info includesKey:#directory) ifTrue:[
+            directory := (info at:#directory).
+        ].
+        fileName := mgr containerFromSourceInfo:info.
     ].
 
     module isNil ifTrue:[
-	doWarn ifTrue:[
-	    self warn:(resources stringWithCRs:'classes module is unknown.\\It seems to not have a container.') .
-	].
-	^ false.
+        doWarn ifTrue:[
+            self warn:(resources stringWithCRs:'classes module is unknown.\\It seems to not have a container.') .
+        ].
+        ^ false.
     ].
     directory isNil ifTrue:[
-	doWarn ifTrue:[
-	    self warn:(resources stringWithCRs:'classes package is unknown.\\It seems to not have a container.') .
-	].
-	^ false.
+        doWarn ifTrue:[
+            self warn:(resources stringWithCRs:'classes package is unknown.\\It seems to not have a container.') .
+        ].
+        ^ false.
     ].
     fileName isNil ifTrue:[
-	doWarn ifTrue:[
-	    self warn:(resources stringWithCRs:'classes container fileName is unknown.\\It seems to not have a container.') .
-	].
-	^ false.
+        doWarn ifTrue:[
+            self warn:(resources stringWithCRs:'classes container fileName is unknown.\\It seems to not have a container.') .
+        ].
+        ^ false.
     ].
 
     OperatingSystem isMSDOSlike ifTrue:[
-	"cvs expects unix-filenames"
-	module := module copy replaceAll:$\ with:$/.
-	directory := directory copy replaceAll:$\ with:$/.
+        "cvs expects unix-filenames"
+        module := module copy replaceAll:$\ with:$/.
+        directory := directory copy replaceAll:$\ with:$/.
     ].
     (mgr checkForExistingContainer:fileName inModule:module directory:directory) ifFalse:[
-	doWarn ifTrue:[
-	    self warn:(resources stringWithCRs:'Class had no source container (or SCM access is broken).') .
-	].
-	^ false.
+        doWarn ifTrue:[
+            self warn:(resources stringWithCRs:'Class had no source container (or SCM access is broken).') .
+        ].
+        ^ false.
     ].
 
     doConfirm ifTrue:[
-	(Dialog
-	    choose:(resources
-			stringWithCRs:'Please confirm removal of the container for %1:
+        (Dialog
+            choose:(resources 
+                        stringWithCRs:'Please confirm removal of the container for %1:
 
 container:    %2 / %3 / %4
 
-Really remove ?'
-			with:aClass name
-			with:module
-			with:directory
-			with:fileName)
-	    labels:(Array
-			with:(resources string:'No')
-			with:(resources string:'Remove'))
-	    values:#(false true)
-	    default:false) ifFalse:[
-	    ^ false.
-	].
+Really remove ?' 
+                        with:aClass name 
+                        with:module 
+                        with:directory 
+                        with:fileName) 
+            labels:(Array 
+                        with:(resources string:'No') 
+                        with:(resources string:'Remove'))
+            values:#(false true)
+            default:false) ifFalse:[
+            ^ false.
+        ].
     ].
 
     (mgr removeContainer:fileName
-		inModule:module
-	       directory:directory) ifFalse:[
-	doWarn ifTrue:[
-	    self warn:(resources string:'failed to remove container.').
-	].
-	^ true.
+                inModule:module
+               directory:directory) ifFalse:[
+        doWarn ifTrue:[
+            self warn:(resources string:'failed to remove container.').
+        ].
+        ^ true.
     ].
     ^ false
 
@@ -2908,80 +2869,76 @@
 repositoryLogOf:aClass short:shortOrNot onto:aStream
     |info rv mgr info2 module fn msg s|
 
-    mgr := self sourceCodeManagerFor:aClass.
-    mgr notNil ifTrue:[
-	info := aClass revisionInfoOfManager: mgr.
-    ] ifFalse:[
-	info := aClass revisionInfo
-    ].
+    info := aClass revisionInfo.
 
     rv := aClass binaryRevision.
     rv notNil ifTrue:[
-	aStream nextPutLine:'**** Loaded classes binary information ****'; cr.
-	aStream nextPutLine:'  Binary based upon : ' , rv.
-	aStream cr.
+        aStream nextPutLine:'**** Loaded classes binary information ****'; cr.
+        aStream nextPutLine:'  Binary based upon : ' , rv.
+        aStream cr.
     ].
 
     info notNil ifTrue:[
-	(info revision notNil) ifFalse:[
-	    aStream nextPutLine:'WARNING:'; cr.
-	    aStream nextPutLine:'  The class seems not to be loaded from the repository.'.
-	    aStream nextPutLine:'  Check carefully before checking anything in.'.
-	    aStream nextPutLine:'  (i.e. compare with repository for renamed class(es), same-name but unrelated etc.)'.
-	    aStream cr.
-	].
-
-	aStream nextPutLine:'**** Classes source information ****'; cr.
-	s := info repositoryPathName.
-	s notNil ifTrue:[
-	    aStream nextPutLine:'  Source repository : ' , s
-	].
-	aStream nextPutLine:'  Filename ........ : ' , (info fileName ? '?').
-	aStream nextPutLine:'  Revision ........ : ' , (info revision ? '?').
-	aStream nextPutLine:'  Checkin date .... : ' , (info date  ? '?') , ' ' ,
-						       (info time ? '?'), ' ',
-						       (info timezone ? '').
-	aStream nextPutLine:'  Checkin user .... : ' , (info user ? '?').
-
-	(info2 := aClass packageSourceCodeInfo) notNil ifTrue:[
-	    aStream nextPutLine:'  Repository: ..... : ' , (info2 at:#module ifAbsent:'?').
-	    aStream nextPutLine:'  Directory: ...... : ' , (info2 at:#directory ifAbsent:'?').
-	].
-	aStream nextPutLine:'  Container ....... : ' , (info repositoryPathName ? '?').
-	aStream cr.
-
-	mgr notNil ifTrue:[
-	    aStream nextPutLine:'**** Repository information ****'; cr.
-
-	    module := nil.
-	    info2 notNil ifTrue:[
-		module := info2 at:#module ifAbsent:nil.
-	    ].
-	    module notNil ifTrue:[
-		aStream nextPutLine:('  Repository URL ......: ' ,
-				    ((mgr repositoryNameForPackage:aClass package) ifNil:[mgr repositoryName , ' (default)'])).
-	    ].
-	    mgr writeRevisionLogOf:aClass short:shortOrNot to:aStream.
-	]
+        (info revision notNil) ifFalse:[
+            aStream nextPutLine:'WARNING:'; cr.
+            aStream nextPutLine:'  The class seems not to be loaded from the repository.'.
+            aStream nextPutLine:'  Check carefully before checking anything in.'.
+            aStream nextPutLine:'  (i.e. compare with repository for renamed class(es), same-name but unrelated etc.)'.
+            aStream cr.
+        ].
+
+        aStream nextPutLine:'**** Classes source information ****'; cr.
+        s := info repositoryPathName.
+        s notNil ifTrue:[
+            aStream nextPutLine:'  Source repository : ' , s
+        ].
+        aStream nextPutLine:'  Filename ........ : ' , (info fileName ? '?').
+        aStream nextPutLine:'  Revision ........ : ' , (info revision ? '?').
+        aStream nextPutLine:'  Checkin date .... : ' , (info date  ? '?') , ' ' , 
+                                                       (info time ? '?'), ' ', 
+                                                       (info timezone ? '').
+        aStream nextPutLine:'  Checkin user .... : ' , (info user ? '?').
+
+        (info2 := aClass packageSourceCodeInfo) notNil ifTrue:[
+            aStream nextPutLine:'  Repository: ..... : ' , (info2 at:#module ifAbsent:'?').
+            aStream nextPutLine:'  Directory: ...... : ' , (info2 at:#directory ifAbsent:'?').
+        ].
+        aStream nextPutLine:'  Container ....... : ' , (info repositoryPathName ? '?').
+        aStream cr.
+
+        mgr := self sourceCodeManagerFor:aClass.
+        mgr notNil ifTrue:[
+            aStream nextPutLine:'**** Repository information ****'; cr.
+
+            module := nil.
+            info2 notNil ifTrue:[
+                module := info2 at:#module ifAbsent:nil.
+            ].
+            module notNil ifTrue:[
+                aStream nextPutLine:('  Repository URL ......: ' , 
+                                    ((mgr repositoryNameForPackage:aClass package) ifNil:[mgr repositoryName , ' (default)'])).
+            ].
+            mgr writeRevisionLogOf:aClass short:shortOrNot to:aStream.
+        ]
     ] ifFalse:[
-	aStream nextPutLine:'No revision info found'.
-	aClass isLoaded ifFalse:[
-	    aStream cr; nextPutAll:'This is an autoloaded class - you may see more after it is loaded.'
-	] ifTrue:[
-	    fn := aClass classFilename.
-	    aClass wasAutoloaded ifTrue:[
-		msg := 'This class was autoloaded.'.
-		msg := msg , ' (from ''' , fn , ''')'.
-	    ] ifFalse:[
-		msg := 'This class was loaded from ''' , fn , '''.'
-	    ].
-	    msg notNil ifTrue:[
-		aStream cr; nextPutAll:msg.
-	    ]
-	]
+        aStream nextPutLine:'No revision info found'.
+        aClass isLoaded ifFalse:[
+            aStream cr; nextPutAll:'This is an autoloaded class - you may see more after it is loaded.'
+        ] ifTrue:[
+            fn := aClass classFilename.
+            aClass wasAutoloaded ifTrue:[
+                msg := 'This class was autoloaded.'.
+                msg := msg , ' (from ''' , fn , ''')'.
+            ] ifFalse:[
+                msg := 'This class was loaded from ''' , fn , '''.'
+            ].
+            msg notNil ifTrue:[
+                aStream cr; nextPutAll:msg.
+            ]
+        ]
     ]
 
-    "Modified: / 06-06-2012 / 11:07:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 12-10-2011 / 18:06:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 11-07-2012 / 13:50:59 / cg"
 !
 
@@ -2990,10 +2947,10 @@
 
     mgr := self sourceCodeManagerFor:aClass.
     mgr
-	setSymbolicName:tag
-	revision:nil
-	overWrite:true
-	class:aClass.
+        setSymbolicName:tag 
+        revision:nil 
+        overWrite:true 
+        class:aClass.
 
     "Modified: / 12-09-2006 / 13:03:59 / cg"
 !
@@ -3002,20 +2959,20 @@
     |classesPerManager|
 
     classesPerManager := Dictionary new.
-    aCollectionOfClasses
-	do:[:eachClass |
-	    |manager|
-
-	    manager := self sourceCodeManagerFor:eachClass.
-	    (classesPerManager at:manager ifAbsentPut:[Set new]) add:eachClass
-	].
+    aCollectionOfClasses 
+        do:[:eachClass | 
+            |manager|
+
+            manager := self sourceCodeManagerFor:eachClass.
+            (classesPerManager at:manager ifAbsentPut:[Set new]) add:eachClass
+        ].
 
     classesPerManager keysAndValuesDo:[:manager :classesPerManager|
-	manager
-	    setSymbolicName:tag
-	    revision:nil
-	    overWrite:true
-	    classes:classesPerManager.
+        manager
+            setSymbolicName:tag 
+            revision:nil 
+            overWrite:true 
+            classes:classesPerManager.
     ].
     ^ true
 
@@ -3031,11 +2988,11 @@
 !
 
 tagPath:aPath as:tag usingManager:aManager
-    aManager
-	setSymbolicName:tag
-	revision:nil
-	overWrite:true
-	path:aPath.
+    aManager 
+        setSymbolicName:tag 
+        revision:nil 
+        overWrite:true 
+        path:aPath.
 
     "Modified: / 12-09-2006 / 12:04:44 / cg"
     "Created: / 29-12-2011 / 14:32:38 / cg"
@@ -3054,20 +3011,20 @@
 
     mgr := self sourceCodeManagerFor:theClass.
     mgr isNil ifTrue:[
-	self error:'no sourceCodeManager'.
+        self error:'no sourceCodeManager'.
     ].
 
     revisionLog := mgr
-			revisionLogOf:theClass
-			numberOfRevisions:numberOfRevisionsOrNil.
+                        revisionLogOf:theClass
+                        numberOfRevisions:numberOfRevisionsOrNil.
 
     revisions := revisionLog at:#revisions.
     items := revisions collect:[:each | |rev date who|
-				    rev := each at:#revision.
-				    date := each at:#date.
-				    who := each at:#author.
-				    rev allBold , ' [' , date , ' by ' , who , ']'
-			       ].
+                                    rev := each at:#revision.
+                                    date := each at:#date.
+                                    who := each at:#author.
+                                    rev allBold , ' [' , date , ' by ' , who , ']'
+                               ].
 
     revisions := revisions collect:[:each | each at:#revision].
     revisions addFirst:#current.
@@ -3075,39 +3032,39 @@
 
     previousVersion := nil.
     revisions reverseDo:[:eachRevision |
-	|srcStream entries thisVersion|
-
-	eachRevision == #current ifTrue:[
-	    s := '' writeStream.
-	    theClass fileOutOn:s withTimeStamp:false.
-	    srcStream := s contents readStream.
-	] ifFalse:[
-	    self activityNotification:('checking out revision ' , eachRevision , '...').
-	    srcStream := mgr getSourceStreamFor:theClass revision:eachRevision.
-	].
-
-	entries := ChangeSet fromStream:srcStream.
-	srcStream close.
-
-	"/ remove all definitions
-	entries := entries select:[:each | each isMethodChange].
-	"/ remove all methods which are for other selectors
-	entries := entries select:[:each | each selector == selector].
-	"/ remove all methods which are for private subclasses
-	entries := entries select:[:each | each className = aClass name].
-
-	entries size == 1 ifTrue:[
-	    "/ the method is there
-	    thisVersion := entries first.
-	    (previousVersion notNil and:[previousVersion sameAs:thisVersion]) ifTrue:[
-		"/ no change
-	    ] ifFalse:[
-		entriesPerRevision at:eachRevision put:thisVersion.
-	    ].
-	] ifFalse:[
-	    "/ the method is not there
-	].
-	previousVersion := thisVersion.
+        |srcStream entries thisVersion|
+
+        eachRevision == #current ifTrue:[
+            s := '' writeStream.
+            theClass fileOutOn:s withTimeStamp:false.
+            srcStream := s contents readStream.
+        ] ifFalse:[
+            self activityNotification:('checking out revision ' , eachRevision , '...').
+            srcStream := mgr getSourceStreamFor:theClass revision:eachRevision.
+        ].
+
+        entries := ChangeSet fromStream:srcStream.
+        srcStream close.
+
+        "/ remove all definitions       
+        entries := entries select:[:each | each isMethodChange].
+        "/ remove all methods which are for other selectors      
+        entries := entries select:[:each | each selector == selector].
+        "/ remove all methods which are for private subclasses      
+        entries := entries select:[:each | each className = aClass name].
+
+        entries size == 1 ifTrue:[
+            "/ the method is there
+            thisVersion := entries first.
+            (previousVersion notNil and:[previousVersion sameAs:thisVersion]) ifTrue:[
+                "/ no change
+            ] ifFalse:[
+                entriesPerRevision at:eachRevision put:thisVersion.
+            ].
+        ] ifFalse:[
+            "/ the method is not there
+        ].
+        previousVersion := thisVersion.
     ].
     self error:'unfinished code'.
 
@@ -3125,9 +3082,9 @@
      or nil if canceled."
 
     ^ self
-	askForContainer:boxText title:title note:notice
-	initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName
-	forNewContainer:true
+        askForContainer:boxText title:title note:notice 
+        initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName 
+        forNewContainer:true
 !
 
 askForContainer:boxText title:title note:notice initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName forNewContainer:forNewContainer
@@ -3137,57 +3094,57 @@
 
     |box y component resources answer
      moduleHolder packageHolder fileNameHolder
-     module package fileName
+     module package fileName 
      knownContainers knownPackages packageUpdater
      packageBoxComponent fileNameBoxComponent fileNameUpdater|
 
     knownContainers := Set new.
     Smalltalk allClassesDo:[:cls | |pckg|
-	pckg := cls package.
-	pckg size > 0 ifTrue:[
-	    knownContainers add:(pckg upTo:$:)
-	]
+        pckg := cls package.
+        pckg size > 0 ifTrue:[
+            knownContainers add:(pckg upTo:$:)
+        ]
     ].
     knownContainers := knownContainers asOrderedCollection.
     knownContainers := knownContainers select:[:module | module isBlank not].
     knownContainers sort.
 
     packageUpdater := [
-	|theModulePrefix|
-
-	theModulePrefix := moduleHolder value , ':'.
-
-	Cursor wait showWhile:[
-	    knownPackages := Set new.
-	    Smalltalk allClassesDo:[:cls | |pckg idx|
-		pckg := cls package.
-		pckg size > 0 ifTrue:[
-		    (pckg startsWith:theModulePrefix) ifTrue:[
-			idx := pckg indexOf:$:.
-			knownPackages add:(pckg copyFrom:idx + 1)
-		    ]
-		]
-	    ].
-	    knownPackages := knownPackages asOrderedCollection.
-	    knownPackages := knownPackages select:[:package | package isBlank not].
-	    knownPackages sort.
-	    packageBoxComponent list:knownPackages.
-	].
+        |theModulePrefix|
+
+        theModulePrefix := moduleHolder value , ':'.
+
+        Cursor wait showWhile:[
+            knownPackages := Set new.
+            Smalltalk allClassesDo:[:cls | |pckg idx|
+                pckg := cls package.
+                pckg size > 0 ifTrue:[
+                    (pckg startsWith:theModulePrefix) ifTrue:[
+                        idx := pckg indexOf:$:.
+                        knownPackages add:(pckg copyFrom:idx + 1)
+                    ]
+                ]
+            ].
+            knownPackages := knownPackages asOrderedCollection.
+            knownPackages := knownPackages select:[:package | package isBlank not].
+            knownPackages sort.
+            packageBoxComponent list:knownPackages.
+        ].
     ].
 
     fileNameUpdater := [
-	|module package files|
-
-	Cursor read showWhile:[
-	    module := moduleHolder value ? (PackageId noProjectID).
-	    package := packageHolder value ? (PackageId noProjectID).
-
-	    files := SourceCodeManager getExistingContainersInModule:module directory:package.
-	    files := files asOrderedCollection.
-	    files := files select:[:eachFile | eachFile asFilename hasSuffix:'st'].
-	    files sort.
-	    fileNameBoxComponent list:files.
-	].
+        |module package files|
+
+        Cursor read showWhile:[
+            module := moduleHolder value ? (PackageId noProjectID).
+            package := packageHolder value ? (PackageId noProjectID).
+
+            files := SourceCodeManager getExistingContainersInModule:module directory:package.
+            files := files asOrderedCollection.
+            files := files select:[:eachFile | eachFile asFilename hasSuffix:'st'].
+            files sort.
+            fileNameBoxComponent list:files.
+        ].
     ].
 
     moduleHolder := initialModule asValue.
@@ -3235,78 +3192,78 @@
     box yPosition:y.
 
     forNewContainer ifTrue:[
-	component := box addInputFieldOn:fileNameHolder tabable:true.
-	component width:0.6; left:0.4; immediateAccept:true; acceptOnLeave:false; cursorMovementWhenUpdating:#beginOfLine.
+        component := box addInputFieldOn:fileNameHolder tabable:true.
+        component width:0.6; left:0.4; immediateAccept:true; acceptOnLeave:false; cursorMovementWhenUpdating:#beginOfLine.
     ] ifFalse:[
-	fileNameBoxComponent := component := box addComboBoxOn:fileNameHolder tabable:true.
-	component width:0.6; left:0.4; immediateAccept:true; acceptOnLeave:false; cursorMovementWhenUpdating:#beginOfLine.
-	fileNameUpdater value.
-	packageHolder onChangeEvaluate:fileNameUpdater.
+        fileNameBoxComponent := component := box addComboBoxOn:fileNameHolder tabable:true.
+        component width:0.6; left:0.4; immediateAccept:true; acceptOnLeave:false; cursorMovementWhenUpdating:#beginOfLine.
+        fileNameUpdater value.
+        packageHolder onChangeEvaluate:fileNameUpdater.
     ].
 
     box addVerticalSpace.
 
     notice notNil ifTrue:[
-	component := box addTextLabel:notice.
-	component adjust:#left; borderWidth:0.
+        component := box addTextLabel:notice.
+        component adjust:#left; borderWidth:0.
     ].
 
     box addVerticalSpace.
     box addAbortAndOkButtons.
 
     (YesToAllNotification notNil and:[YesToAllNotification isHandled]) ifTrue:[
-	component := Button label:'Yes to all'.
-	component action:[
-			    YesToAllNotification queryWith:true.
-			    box doAccept.
-			    box okPressed.
-			 ].
-	(DialogBox defaultOKButtonAtLeft) ifTrue:[
-	    box addButton:component after:nil.
-	] ifFalse:[
-	    box addButton:component before:nil.
-	].
+        component := Button label:'Yes to all'.
+        component action:[
+                            YesToAllNotification queryWith:true.
+                            box doAccept.
+                            box okPressed.
+                         ].
+        (DialogBox defaultOKButtonAtLeft) ifTrue:[
+            box addButton:component after:nil.
+        ] ifFalse:[
+            box addButton:component before:nil.
+        ].
     ].
     (AbortAllSignal isHandled) ifTrue:[
-	component := Button label:'Cancel all'.
-	component action:[
-			    box hide.
-			    AbortAllSignal raiseSignal.
-			 ].
-	(DialogBox defaultOKButtonAtLeft) ifTrue:[
-	    box addButton:component before:nil.
-	] ifFalse:[
-	    box addButton:component after:nil.
-	].
+        component := Button label:'Cancel all'.
+        component action:[
+                            box hide.
+                            AbortAllSignal raiseSignal.
+                         ].
+        (DialogBox defaultOKButtonAtLeft) ifTrue:[
+            box addButton:component before:nil.
+        ] ifFalse:[
+            box addButton:component after:nil.
+        ].
     ].
 
     (YesToAllQuery notNil and:[YesToAllQuery isHandled]) ifTrue:[
-	answer := YesToAllQuery query.
+        answer := YesToAllQuery query.
     ].
 
     answer isNil ifTrue:[
-	box showAtPointer.
-	answer := box accepted
+        box showAtPointer.
+        answer := box accepted
     ].
 
     box destroy.
     answer ifFalse:[
-	^ nil
+        ^ nil
     ].
 
     module := moduleHolder value withoutSpaces.
     package := packageHolder value withoutSpaces.
     fileName := fileNameHolder value withoutSpaces.
     ^ Dictionary new
-	at:#module put:module;
-	at:#package put:package;
-	at:#fileName put:fileName;
-	yourself
+        at:#module put:module;
+        at:#package put:package;
+        at:#fileName put:fileName;
+        yourself
 
     "
-     self
-	askForContainer:'enter container' title:'container' note:'some note'
-	initialModule:'foo' initialPackage:'bar' initialFileName:'baz'
+     self 
+        askForContainer:'enter container' title:'container' note:'some note'
+        initialModule:'foo' initialPackage:'bar' initialFileName:'baz'        
     "
 
     "Modified: / 23-08-2006 / 14:13:04 / cg"
@@ -3323,21 +3280,21 @@
     sourceInfo isNil ifTrue:[^ nil].
 
     package := mgr directoryFromSourceInfo:sourceInfo.
-    module := mgr moduleFromSourceInfo:sourceInfo.
+    module := mgr moduleFromSourceInfo:sourceInfo.  
     fileName := mgr containerFromSourceInfo:sourceInfo.
     ^ self
-	askForExistingRevision:boxText
-	title:title
-	class:aClass
-	manager:mgr
-	module:module package:package
-	fileName:fileName
+        askForExistingRevision:boxText 
+        title:title 
+        class:aClass 
+        manager:mgr 
+        module:module package:package 
+        fileName:fileName
 
     "
      SourceCodeManagerUtilities
-	askForRevisionToCompare:'enter revision'
-	title:'revision'
-	class:Array
+        askForRevisionToCompare:'enter revision'
+        title:'revision'
+        class:Array
     "
 
     "Modified: / 12-09-2006 / 14:17:04 / cg"
@@ -3348,97 +3305,97 @@
      return a revision number, or nil if canceled."
 
     |partialLog revisions items newestRev
-     box y component resources
+     box y component resources 
      revisionHolder symbolicNames stableRevision releasedRevision
      tagHolder tagList lockChange|
 
     resources := self classResources.
 
     partialLog := aSourceCodeManager
-	revisionLogOf:clsOrNil
-	numberOfRevisions:20
-	fileName:fileName
-	directory:directory
-	module:module.
+        revisionLogOf:clsOrNil
+        numberOfRevisions:20
+        fileName:fileName
+        directory:directory 
+        module:module.
 
     partialLog notNil ifTrue:[
-	newestRev := partialLog at:#newestRevision.
-	revisions := partialLog at:#revisions.
-	symbolicNames := partialLog at:#symbolicNames ifAbsent:[].
-	symbolicNames notNil ifTrue:[
-	    stableRevision := symbolicNames at:'stable' ifAbsent:[].
-	    releasedRevision := symbolicNames at:'released' ifAbsent:[].
-	    tagList := ((symbolicNames associations sort:[:a :b | self versionString:(a value) isLessThan:(b value)])
-			 collect:[:assoc | assoc key]) reverse.
-	].
-
-	items := revisions collect:[:each | |rev date who flag|
-					rev := each at:#revision.
-					date := (each at:#date ifAbsent:nil) ? '?'.
-					who := (each at:#author ifAbsent:nil) ? '?'.
-					rev = stableRevision ifTrue:[
-					    flag := ' Stable' allBold.
-					] ifFalse:[rev = releasedRevision ifTrue:[
-					    flag := ' Released' allBold.
-					] ifFalse:[
-					    flag := ' '
-					]].
-					rev allBold , flag, ' [' , date , ' by ' , who , ']'
-				   ].
-	revisions := revisions collect:[:each | each at:#revision].
+        newestRev := partialLog at:#newestRevision.
+        revisions := partialLog at:#revisions.
+        symbolicNames := partialLog at:#symbolicNames ifAbsent:[].
+        symbolicNames notNil ifTrue:[
+            stableRevision := symbolicNames at:'stable' ifAbsent:[].
+            releasedRevision := symbolicNames at:'released' ifAbsent:[].
+            tagList := ((symbolicNames associations sort:[:a :b | self versionString:(a value) isLessThan:(b value)])
+                         collect:[:assoc | assoc key]) reverse.
+        ].
+            
+        items := revisions collect:[:each | |rev date who flag|
+                                        rev := each at:#revision.
+                                        date := (each at:#date ifAbsent:nil) ? '?'.
+                                        who := (each at:#author ifAbsent:nil) ? '?'.
+                                        rev = stableRevision ifTrue:[
+                                            flag := ' Stable' allBold.
+                                        ] ifFalse:[rev = releasedRevision ifTrue:[
+                                            flag := ' Released' allBold.
+                                        ] ifFalse:[
+                                            flag := ' '
+                                        ]].
+                                        rev allBold , flag, ' [' , date , ' by ' , who , ']'
+                                   ].
+        revisions := revisions collect:[:each | each at:#revision].
     ] ifFalse:[
-	newestRev := aSourceCodeManager newestRevisionInFile:fileName directory:directory module:module.
-	revisions := items := nil.
-
-	newestRev isNil ifTrue:[
-	    (aSourceCodeManager checkForExistingContainer:fileName inModule:module directory:directory)
-	    ifFalse:[
-		self warn:'Could not find/access the container for ',fileName,' in the repository.
+        newestRev := aSourceCodeManager newestRevisionInFile:fileName directory:directory module:module.
+        revisions := items := nil.
+
+        newestRev isNil ifTrue:[
+            (aSourceCodeManager checkForExistingContainer:fileName inModule:module directory:directory)
+            ifFalse:[
+                self warn:'Could not find/access the container for ',fileName,' in the repository.
 This could be due to:
     - invalid/wrong CVS-Root setting
     - missing CVS access rights
-	(no access / not logged in)
+        (no access / not logged in)
     - changed CVSRoot after compilation
-	(i.e. wrong CVS-path in classes version method)
+        (i.e. wrong CVS-path in classes version method)
 '.
-		^ nil
-	    ]
-	]
+                ^ nil
+            ]
+        ]
     ].
 
     lockChange := false.
     revisionHolder := newestRev asValue.
     revisionHolder onChangeEvaluate:[
-	"/ cut off everything after revision
-	|s first words tag|
-
-	s := revisionHolder value.
-	words := s asCollectionOfWords.
-	words size > 0 ifTrue:[
-	    first := words first string.
-	    first ~= s ifTrue:[
-		revisionHolder value:first
-	    ]
-	].
-	lockChange ifFalse:[
-	    tagHolder value:''
-	].
+        "/ cut off everything after revision
+        |s first words tag|
+
+        s := revisionHolder value.
+        words := s asCollectionOfWords.
+        words size > 0 ifTrue:[
+            first := words first string.
+            first ~= s ifTrue:[
+                revisionHolder value:first
+            ]
+        ].
+        lockChange ifFalse:[
+            tagHolder value:''
+        ].
     ].
 
     tagHolder := '' asValue.
-    tagHolder
-	onChangeEvaluate:[
-	    |tag rev|
-
-	    (tag := tagHolder value) notEmptyOrNil ifTrue:[
-		rev := symbolicNames at:tag.
-		rev ~= revisionHolder value ifTrue:[
-		    lockChange := true.
-		    revisionHolder value:rev.
-		    lockChange := false.
-		].
-	    ]
-	].
+    tagHolder 
+        onChangeEvaluate:[
+            |tag rev|
+
+            (tag := tagHolder value) notEmptyOrNil ifTrue:[
+                rev := symbolicNames at:tag.
+                rev ~= revisionHolder value ifTrue:[
+                    lockChange := true.
+                    revisionHolder value:rev.
+                    lockChange := false.
+                ].
+            ]
+        ].
 
     "/
     "/ open a dialog for this
@@ -3467,7 +3424,7 @@
     component list:tagList.
     component width:0.6; left:0.4.
     tagList isNil ifTrue:[
-	component disable
+        component disable
     ].
 
     box addVerticalSpace.
@@ -3475,14 +3432,14 @@
     box addAbortAndOkButtons.
 
     AbortAllOperationWantedQuery query ifTrue:[
-	(box addAbortButtonLabelled:'Cancel all') action:[AbortAllSignal raise].
+        (box addAbortButtonLabelled:'Cancel all') action:[AbortAllSignal raise].
     ].
 
     box showAtPointer.
 
     box accepted ifFalse:[
-	box destroy.
-	^ nil
+        box destroy.
+        ^ nil
     ].
     box destroy.
 
@@ -3490,13 +3447,13 @@
 
     "
      SourceCodeManagerUtilities
-	askForRevisionToCompare:'enter revision'
-	title:'revision'
-	class:nil
-	manager:SourceCodeManager
-	module:'stx'
-	directory:'libbasic'
-	fileName:'Array.st'
+        askForRevisionToCompare:'enter revision'
+        title:'revision'
+        class:nil
+        manager:SourceCodeManager 
+        module:'stx'
+        directory:'libbasic'
+        fileName:'Array.st'
     "
 
     "Modified: / 21-12-2011 / 23:09:26 / cg"
@@ -3504,10 +3461,10 @@
 
 checkAndWarnAboutBadMessagesInClass:aClass checkAgainHolder:checkAgainHolder
     "check if a class contains message-sends to:
-	#halt , #halt:
-	#error
-	#todo , #todo:
-	(and maybe more in the future)
+        #halt , #halt:
+        #error
+        #todo , #todo:
+        (and maybe more in the future)
 
      Only checks in non-extension methods - as this is only called when checking "
 
@@ -3517,62 +3474,62 @@
     resources := Dialog classResources.
 
     badStuff := #(
-	( halt         'send of #halt (use for debugging only) - better use #error:''some message'' or #breakPoint:')
-	( halt:        'send of #halt: (use for debugging only) - better use #error: or #breakPoint:')
-	( error        'send of #error without descriptive message - better use #error:''some message''' )
-	( todo         'send of #todo - unfinished code present?' )
-	( todo:        'send of #todo:- unfinished code present?' )
+        ( halt         'send of #halt (use for debugging only) - better use #error:''some message'' or #breakPoint:')
+        ( halt:        'send of #halt: (use for debugging only) - better use #error: or #breakPoint:')
+        ( error        'send of #error without descriptive message - better use #error:''some message''' )
+        ( todo         'send of #todo - unfinished code present?' )
+        ( todo:        'send of #todo:- unfinished code present?' )
     ).
 
     methodsWithBadStuff := Set new.
     whatIsBad := Set new.
     aClass theNonMetaclass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
-	|setOfLiterals setOfSentMessages|
-
-	mthd package = aClass package ifTrue:[
-	    setOfLiterals := mthd literals.  "/ try without parsing first.
-	    (badStuff contains:[:eachEntry | setOfLiterals includes:eachEntry first]) ifTrue:[
-		setOfSentMessages := mthd messagesSent.
-		badStuff do:[:eachEntry |
-		    (setOfSentMessages includes:eachEntry first) ifTrue:[
-			whatIsBad add:eachEntry second.
-			methodsWithBadStuff add:mthd.
-		    ]
-		].
-	    ].
-	].
+        |setOfLiterals setOfSentMessages|
+
+        mthd isExtension ifFalse:[
+            setOfLiterals := mthd literals.  "/ try without parsing first.
+            (badStuff contains:[:eachEntry | setOfLiterals includes:eachEntry first]) ifTrue:[
+                setOfSentMessages := mthd messagesSent.
+                badStuff do:[:eachEntry | 
+                    (setOfSentMessages includes:eachEntry first) ifTrue:[
+                        whatIsBad add:eachEntry second.
+                        methodsWithBadStuff add:mthd.
+                    ]
+                ].
+            ].
+        ].
     ].
     whatIsBad isEmpty ifTrue:[^ true].
 
     (YesToAllQuery notNil and:[YesToAllQuery isHandled]) ifTrue:[
-	answer := YesToAllQuery query.
-	answer notNil ifTrue:[ ^ answer ].
+        answer := YesToAllQuery query.
+        answer notNil ifTrue:[ ^ answer ].
     ].
 
     msg := resources string:'%1 contains the following (considered bad style) message sends:' with:aClass name.
     msg := msg , '\\'.
     whatIsBad do:[:each |
-	msg := msg , '   ' , each , '\'
+        msg := msg , '   ' , each , '\'
     ].
     msg := msg , '\'.
     methodsWithBadStuff size == 1 ifTrue:[
-	msg := msg , (resources string:'In %1.'
-			with:methodsWithBadStuff anElement whoString allBold).
+        msg := msg , (resources string:'In %1.' 
+                        with:methodsWithBadStuff anElement whoString allBold).
     ] ifFalse:[
-	msg := msg , (resources string:'In %1 and %2 other methods.'
-			with:methodsWithBadStuff anElement whoString allBold
-			with:methodsWithBadStuff size-1).
+        msg := msg , (resources string:'In %1 and %2 other methods.' 
+                        with:methodsWithBadStuff anElement whoString allBold 
+                        with:methodsWithBadStuff size-1).
     ].
     msg := msg , '\\' , (resources string:'Do you really want to checkIn the %1 class ?' with:aClass name).
 
     (YesToAllNotification notNil and:[YesToAllNotification isHandled]) ifTrue:[
-	labels := #('Cancel All' 'Cancel' 'No to All' 'No' 'No, Browse' 'Yes to All' 'Yes') "#('Yes' 'Yes to All' 'No' 'No to All' 'Cancel')".
-	values := #(#cancelAll nil #noToAll #noBrowse false #yesToAll true) "#(true #yesToAll false #noToAll nil)".
-	defaultAnswer := #yesToAll.
+        labels := #('Cancel All' 'Cancel' 'No to All' 'No' 'No, Browse' 'Yes to All' 'Yes') "#('Yes' 'Yes to All' 'No' 'No to All' 'Cancel')".
+        values := #(#cancelAll nil #noToAll #noBrowse false #yesToAll true) "#(true #yesToAll false #noToAll nil)".
+        defaultAnswer := #yesToAll.
     ] ifFalse:[
-	labels := #('No' 'No, Browse' 'Yes').
-	values := #(false #noBrowse true).
-	defaultAnswer := true.
+        labels := #('No' 'No, Browse' 'Yes').
+        values := #(false #noBrowse true).
+        defaultAnswer := true.
     ].
 
 "/        AbortAllOperationRequest isHandled ifTrue:[
@@ -3581,53 +3538,53 @@
 "/        ].
 
     DialogBox aboutToOpenBoxNotificationSignal handle:[:ex |
-	|box|
-
-	checkAgainHolder isValueModel ifTrue:[
-	    dontShowAgain := checkAgainHolder value not asValue.
-	    box := ex parameter.
-	    box addCheckBoxAtBottom:(resources string:'Do not show this Dialog again (reenable in Launcher).')
-		on:dontShowAgain.
-	].
-	ex proceed.
+        |box|
+
+        checkAgainHolder isValueModel ifTrue:[
+            dontShowAgain := checkAgainHolder value not asValue.
+            box := ex parameter.
+            box addCheckBoxAtBottom:(resources string:'Do not show this Dialog again (reenable in Launcher).')
+                on:dontShowAgain.
+        ].
+        ex proceed.
     ] do:[
-	answer := OptionBox
-		      request:msg withCRs
-		      label:(resources string:'Really CheckIn ?')
-		      image:(InfoBox iconBitmap)
-		      buttonLabels:(resources array:labels)
-		      values:values
-		      default:defaultAnswer
-		      onCancel:nil.
+        answer := OptionBox 
+                      request:msg withCRs
+                      label:(resources string:'Really CheckIn ?')
+                      image:(InfoBox iconBitmap)
+                      buttonLabels:(resources array:labels)
+                      values:values
+                      default:defaultAnswer
+                      onCancel:nil.
     ].
     answer isNil ifTrue:[
-	AbortSignal raise.
+        AbortSignal raise.
     ].
 
     dontShowAgain notNil ifTrue:[
-	checkAgainHolder value:dontShowAgain value not
+        checkAgainHolder value:dontShowAgain value not 
     ].
 
     answer == #noBrowse ifTrue:[
-	UserPreferences browserClass browseMethods:methodsWithBadStuff title:'Methods with Bad Stuff'.
-	self yesToAllNotification queryWith:false.
-	^ false
+        UserPreferences browserClass browseMethods:methodsWithBadStuff title:'Methods with Bad Stuff'.
+        self yesToAllNotification queryWith:false.
+        ^ false
     ].
     answer == #cancelAll ifTrue:[
-	AbortAllSignal raise.
+        AbortAllSignal raise.
     ].
     answer == #yesToAll ifTrue:[
-	YesToAllNotification queryWith:true.
-	^ true
+        YesToAllNotification queryWith:true.
+        ^ true
     ].
     answer == #noToAll ifTrue:[
-	YesToAllNotification queryWith:false.
-	^ false
+        YesToAllNotification queryWith:false.
+        ^ false
     ].
     ^ answer
 
     "
-     self checkAndWarnAboutBadMessagesInClass:(SourceCodeManagerUtilities)
+     self checkAndWarnAboutBadMessagesInClass:(SourceCodeManagerUtilities)  
     "
 
     "Modified: / 28-02-2012 / 10:41:38 / cg"
@@ -3639,9 +3596,9 @@
      Return the info-object (actually: the dialog) or nil if aborted."
 
     ^ self
-	getCheckinInfoFor:aClassNameOrPackageNameString
-	initialAnswer:initialAnswerOrNil
-	withQuickOption:false
+        getCheckinInfoFor:aClassNameOrPackageNameString 
+        initialAnswer:initialAnswerOrNil
+        withQuickOption:false
 
     "
      SourceCodeManagerUtilities getCheckinInfoFor:'hello' initialAnswer:'bla'
@@ -3657,25 +3614,25 @@
 
     |logMsg infoDialog|
 
-    infoDialog := Tools::CheckinInfoDialog
-		    getCheckinInfoFor:aClassNameOrPackageNameString
-		    initialAnswer:(initialAnswerOrNil ? LastSourceLogMessage)
-		    withQuickOption:withQuickOption
-		    logHistory:(LastSourceLogMessages ? #()).
+    infoDialog := Tools::CheckinInfoDialog 
+                    getCheckinInfoFor:aClassNameOrPackageNameString 
+                    initialAnswer:(initialAnswerOrNil ? LastSourceLogMessage)
+                    withQuickOption:withQuickOption
+                    logHistory:(LastSourceLogMessages ? #()).
 
     infoDialog notNil ifTrue:[
-	logMsg := infoDialog logMessage.
-	logMsg notEmptyOrNil ifTrue:[
-	    LastSourceLogMessage := logMsg.
-	    LastSourceLogMessages isNil ifTrue:[
-		LastSourceLogMessages := OrderedCollection new.
-	    ].
-	    LastSourceLogMessages remove:logMsg ifAbsent:[].
-	    LastSourceLogMessages addFirst:logMsg.
-	    LastSourceLogMessages size > 10 ifTrue:[
-		LastSourceLogMessages removeLast
-	    ].
-	].
+        logMsg := infoDialog logMessage.
+        logMsg notEmptyOrNil ifTrue:[
+            LastSourceLogMessage := logMsg.
+            LastSourceLogMessages isNil ifTrue:[
+                LastSourceLogMessages := OrderedCollection new.
+            ].
+            LastSourceLogMessages remove:logMsg ifAbsent:[].
+            LastSourceLogMessages addFirst:logMsg.
+            LastSourceLogMessages size > 10 ifTrue:[
+                LastSourceLogMessages removeLast
+            ].
+        ].
     ].
     ^ infoDialog
 
@@ -3687,72 +3644,73 @@
 !
 
 goodInitialLogMessageForCheckinClassOfClass:aClass
-    "figure out, if there were any non-comment changes.
-     Provide a reasonable initial log message (I am tired of typing in 'comment only')"
+    "figure out, if there were any non-comment changes. 
+     Provide a reasonable initial log message (I am tired of typing in 'comment only').
+     This is a q&d hack - not complete and not correct (for example, it will generate a method change
+     info line, even if the selector was removed afterwards).
+     So check the outcome."
 
     |selectorsInChangeSet newSelectors modifiedSelectors
-     classChanges changesForThisClass definitionChangesForThisClass methodChangesForThisClass
+     classChanges changesForThisClass definitionChangesForThisClass methodChangesForThisClass 
      allMethodChangesForThisClass modifiedMethodsForThisClass newMethodsForThisClass removedMethodsForThisClass
      initialLogStream printSelectors selectorsWithCommentOrFormattingChangeOnly
-     selectorsWithVariableChangeOnly
+     selectorsWithVariableChangeOnly 
      removedSelectors categoryChanges categoryChangeSelectors|
 
     "/ a helper function
-    printSelectors :=
+    printSelectors := 
         [:what :selectors |
-            initialLogStream
-                nextPutAll:(what,':').
+            initialLogStream nextPutAll:(what,':').
             selectors size < 5 ifTrue:[
                 selectors size == 1 ifTrue:[
-                    initialLogStream
-                        print: ' #';
-                        print: (selectors first);
-                        cr.
+                    initialLogStream 
+                        print: ' #'; printCR:(selectors first).
                 ] ifFalse:[
                     initialLogStream cr.
                     selectors asSortedCollection do:[:sel | initialLogStream tab; nextPutAll:'#'; nextPutLine:sel].
                 ]
             ] ifFalse:[
-                initialLogStream
-                    print: (selectors size);
-                    print: ' methods';
-                    cr.
+                initialLogStream 
+                    print: (selectors size); printCR: ' methods'.
             ].
         ].
 
     classChanges := ChangeSet current select:[:aChange | aChange isClassChange].
 
-    changesForThisClass := classChanges
+    changesForThisClass := classChanges 
                                 select:[:aChange | aChange className = aClass theNonMetaclass name
                                                    or:[aChange className = aClass theMetaclass name] ].
 
     definitionChangesForThisClass := changesForThisClass select:[:aChange | aChange isMethodChange not].
-    categoryChanges := changesForThisClass select:[:aChange | aChange isMethodCategoryChange].
+    categoryChanges := changesForThisClass select:[:aChange | aChange isMethodCategoryChange]. 
     categoryChangeSelectors := categoryChanges collect:[:aChange | aChange changeSelector] as:Set.
     allMethodChangesForThisClass := changesForThisClass select:[:aChange | aChange isMethodCodeChange].
     selectorsInChangeSet := allMethodChangesForThisClass collect:[:aChange | aChange changeSelector] as:Set.
     methodChangesForThisClass := selectorsInChangeSet collect:[:eachSelector |
                                         allMethodChangesForThisClass detectLast:[:change | change changeSelector = eachSelector]] as:OrderedCollection.
-
-    modifiedMethodsForThisClass := methodChangesForThisClass
+                                            
+    modifiedMethodsForThisClass := methodChangesForThisClass 
                                 select:[:aChange | aChange previousVersion notNil].
     modifiedSelectors := modifiedMethodsForThisClass collect:[:aChange | aChange changeSelector] as:Set.
 
-    newMethodsForThisClass := allMethodChangesForThisClass
+    newMethodsForThisClass := allMethodChangesForThisClass 
                                 select:[:aChange | aChange previousVersion isNil].
     newSelectors := newMethodsForThisClass collect:[:aChange | aChange changeSelector] as:Set.
-
-    removedMethodsForThisClass := allMethodChangesForThisClass
+    
+    removedMethodsForThisClass := allMethodChangesForThisClass 
                                 select:[:aChange | aChange isMethodRemoveChange].
     removedSelectors := removedMethodsForThisClass collect:[:aChange | aChange changeSelector] as:Set.
 
     initialLogStream := '' writeStream.
+
+    initialLogStream printCR:'class: ',aClass name.
+
     "/ definition?
     "/ suppress definition-message if initial checkin
-    (aClass package isNil or:[aClass revision isNil]) ifFalse:[
+    (aClass package isNil or:[aClass revision isNil]) ifFalse:[ 
         definitionChangesForThisClass notEmpty ifTrue:[
-            initialLogStream
-                print:'class definition'; cr.
+            "/ self halt.
+            initialLogStream printCR:'class definition'.
         ].
     ].
 
@@ -3775,10 +3733,10 @@
         selectorsWithCommentOrFormattingChangeOnly := Set new.
         selectorsWithVariableChangeOnly := Set new.
 
-        "/ cehck for format/comment change
+        "/ check for format/comment change
         RBParser notNil ifTrue:[
             modifiedSelectors do:[:eachSelector |
-                |oldest newest oldMethod newMethod oldTree newTree variableMapping|
+                |oldest newest oldMethod newMethod oldTree newTree variableMapping unchangedVariables|
 
                 (newSelectors includes:eachSelector) ifFalse:[
                     oldest := allMethodChangesForThisClass detect:[:change | change changeSelector = eachSelector].
@@ -3788,14 +3746,22 @@
 
                     oldTree := RBParser parseMethod:oldest source onError:[:aString :pos | nil].
                     newTree := RBParser parseMethod:newest source onError:[:aString :pos | nil].
+
                     (oldTree notNil and:[newTree notNil]) ifTrue:[
                         variableMapping := Dictionary new.
                         (oldTree equalTo:newTree withMapping: variableMapping) ifTrue:[
-                            (variableMapping at:'self' ifAbsent:nil) = 'self' ifTrue:[
+                            unchangedVariables := variableMapping keys select:[:k | (variableMapping at:k) = k].
+                            variableMapping removeAllKeys:unchangedVariables.
+
+                            (variableMapping at:'self' ifAbsent:'self') = 'self' ifTrue:[
                                 ((variableMapping associations count:[:assoc | assoc key ~= assoc value]) == 0) ifTrue:[
                                     selectorsWithCommentOrFormattingChangeOnly add:eachSelector.
                                 ] ifFalse:[
-                                    selectorsWithVariableChangeOnly add:eachSelector.
+                                    "/ check, if a global has changed
+                                    ((variableMapping keys contains:[:var | var first isUppercase])
+                                    or:[ (variableMapping values contains:[:var | var first isUppercase]) ]) ifFalse:[
+                                        selectorsWithVariableChangeOnly add:eachSelector.
+                                    ].
                                 ].
                             ].
                         ].
@@ -3822,17 +3788,17 @@
     ].
     ^ initialLogStream contents
 
-    "Modified: / 27-01-2011 / 09:25:30 / cg"
+    "Modified: / 26-09-2012 / 18:31:38 / cg"
 ! !
 
 !SourceCodeManagerUtilities methodsFor:'utilities-encoding'!
 
 guessEncodingOfFile:aFilename
     "look for a string
-	encoding #name
+        encoding #name
      or:
-	encoding: name
-     within the given buffer
+        encoding: name
+     within the given buffer 
      (which is usually the first few bytes of a textFile).
      If that's not found, use heuristics (in CharacterArray) to guess."
 
@@ -3851,9 +3817,9 @@
 
 guessEncodingOfStream:aStream
     "look for a string of the form
-	    encoding #name
+            encoding #name
      or:
-	    encoding: name
+            encoding: name
      in the first few bytes of aStream."
 
     <resource: #obsolete>
@@ -3865,13 +3831,9 @@
 !SourceCodeManagerUtilities class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.256 2012/09/26 16:33:42 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.264 2012/11/07 16:54:17 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.256 2012/09/26 16:33:42 cg Exp §'
-!
-
-version_SVN
-    ^ '$Id: SourceCodeManagerUtilities.st 1971 2012-09-27 19:37:25Z vranyj1 $'
-! !
+    ^ 'Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.264 2012/11/07 16:54:17 cg Exp '
+! !
\ No newline at end of file
--- a/SourceCodeManagerUtilitiesForContainerBasedManagers.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/SourceCodeManagerUtilitiesForContainerBasedManagers.st	Fri Nov 30 17:20:01 2012 +0000
@@ -165,7 +165,7 @@
      If the argument, aLogInfoOrNil isNil, ask interactively for log-message.
      If doCheckClass is true, the class is checked for send of halts etc."
 
-    |logMessage checkinInfo mgr pri resources|
+    |logMessage checkinInfo mgr pri|
 
     aClass isLoaded ifFalse:[
         self information:(resources string:'Cannot checkin unloaded classes (%1)' with:aClass name).
@@ -192,8 +192,6 @@
         ) ifFalse:[^ false].
     ].
 
-    resources := self classResources.
-
     (self classIsNotYetInRepository:aClass withManager:mgr) ifTrue:[
         (self createSourceContainerForClass:aClass usingManager:mgr) ifFalse:[
 "/            self warn:'did not create a container for ''' , aClass name , ''''.
@@ -312,7 +310,7 @@
     "check a bunch of classes into the source repository.
      If the argument, aLogInfoOrStringNil isNil, ask interactively for log-message."
 
-    |classes allClasses checkinInfoOrString resources yesOrNoToAll unchangedClasses|
+    |classes allClasses checkinInfoOrString yesOrNoToAll unchangedClasses|
 
     "/ ignore private classes
     classes := aCollectionOfClasses select:[:aClass | aClass owningClass isNil].
@@ -330,8 +328,6 @@
         ^ self checkinClass:classes first withInfo:aLogInfoOrStringNil withCheck:doCheckClasses usingManager:aManagerOrNil.
     ].
 
-    resources := self classResources.
-
     "ask once, for all classes"
     aLogInfoOrStringNil isNil ifTrue:[
         checkinInfoOrString := self 
@@ -406,9 +402,7 @@
     "checkin a projects extensions into the source repository.
      If the argument, aLogInfoOrStringOrNil isNil, ask interactively for log-message."
 
-    |logMessage checkinInfo mgr pri resources module directory containerFileName methodSource|
-
-    resources := self classResources.
+    |logMessage checkinInfo mgr pri module directory containerFileName methodSource|
 
     "/ the following is wrong - must ask the projectDefinition !!
     aPackageID asPackageId projectDefinitionClass notNil ifTrue:[
@@ -711,13 +705,13 @@
 !SourceCodeManagerUtilitiesForContainerBasedManagers class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilitiesForContainerBasedManagers.st,v 1.2 2012/09/04 12:09:12 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilitiesForContainerBasedManagers.st,v 1.3 2012/10/30 14:34:22 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilitiesForContainerBasedManagers.st,v 1.2 2012/09/04 12:09:12 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilitiesForContainerBasedManagers.st,v 1.3 2012/10/30 14:34:22 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id:: SourceCodeManagerUtilitiesForContainerBasedManagers.st 1971 2012-09-27 19:37:25Z vranyj1                               $'
+    ^ '$Id:: SourceCodeManagerUtilitiesForContainerBasedManagers.st 1981 2012-11-30 17:20:01Z vranyj1                               $'
 ! !
--- a/WrappedMethod.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/WrappedMethod.st	Fri Nov 30 17:20:01 2012 +0000
@@ -53,7 +53,7 @@
 !WrappedMethod class methodsFor:'others'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/WrappedMethod.st,v 1.32 2012/07/31 12:16:21 vrany Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic3/WrappedMethod.st,v 1.33 2012/10/22 08:13:16 cg Exp §'
 ! !
 
 !WrappedMethod class methodsFor:'registration'!
@@ -86,7 +86,7 @@
 !WrappedMethod methodsFor:'accessing'!
 
 annotations
-    "return the wrapped methods annotations"
+    "return the wrapped method's annotations"
 
     ^ self originalMethod annotations
 
@@ -107,13 +107,13 @@
 !
 
 literals
-    "return the wrapped methods literals"
+    "return the wrapped method's literals"
 
     ^ self originalMethod literals
 !
 
 literalsDetect:aBlock ifNone:exceptionBlock
-    "access the wrapped methods literals"
+    "access the wrapped method's literals"
 
     ^ self originalMethod literalsDetect:aBlock ifNone:exceptionBlock
 
@@ -121,7 +121,7 @@
 !
 
 literalsDo:aBlock
-    "access the wrapped methods literals"
+    "access the wrapped method's literals"
 
     ^ self originalMethod literalsDo:aBlock
 
@@ -177,7 +177,7 @@
 !
 
 privacy
-    "return the wrapped methods privacy"
+    "return the wrapped method's privacy"
 
     ^ self originalMethod privacy
 
@@ -186,7 +186,7 @@
 !
 
 privacy:aSymbol
-    "set the wrapped methods privacy"
+    "set the wrapped method's privacy"
 
     ^ self originalMethod privacy:aSymbol
 !
@@ -200,7 +200,7 @@
 !
 
 setPrivacy:aSymbol
-    "set the wrapped methods privacy"
+    "set the wrapped method's privacy"
 
     ^ self originalMethod setPrivacy:aSymbol
 
@@ -345,9 +345,9 @@
 !WrappedMethod class methodsFor:'documentation'!
 
 version
-    ^ '$Id: WrappedMethod.st 1957 2012-09-05 11:45:38Z vranyj1 $'
+    ^ '$Id: WrappedMethod.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 !
 
 version_SVN
-    ^ '$Id: WrappedMethod.st 1957 2012-09-05 11:45:38Z vranyj1 $'
+    ^ '$Id: WrappedMethod.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
--- a/bc.mak	Sun Nov 18 19:46:19 2012 +0000
+++ b/bc.mak	Fri Nov 30 17:20:01 2012 +0000
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libbasic3/bc.mak,v 1.110 2012/07/31 13:30:56 vrany Exp $
+# $Header: /cvs/stx/stx/libbasic3/bc.mak,v 1.111 2012/10/31 16:07:44 stefan Exp $
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libbasic3.
@@ -15,7 +15,7 @@
 #    bmake clobber - clean all
 #
 # Historic Note:
-#  this used to contain only rules to make with borland 
+#  this used to contain only rules to make with borland
 #    (called via bmake, by "make.exe -f bc.mak")
 #  this has changed; it is now also possible to build using microsoft visual c
 #    (called via vcmake, by "make.exe -f bc.mak -DUSEVC")
@@ -71,7 +71,7 @@
 $(OUTDIR)Change.$(O) Change.$(H): Change.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ChangeDeltaInformation.$(O) ChangeDeltaInformation.$(H): ChangeDeltaInformation.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ChangeNotificationParameter.$(O) ChangeNotificationParameter.$(H): ChangeNotificationParameter.st $(INCLUDE_TOP)\stx\libbasic\Array.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)ChangeSet.$(O) ChangeSet.$(H): ChangeSet.st $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SmalltalkChunkFileSourceWriter.$(H) $(INCLUDE_TOP)\stx\libbasic\AbstractSourceFileWriter.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(STCHDR)
+$(OUTDIR)ChangeSet.$(O) ChangeSet.$(H): ChangeSet.st $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\SmalltalkChunkFileSourceWriter.$(H) $(INCLUDE_TOP)\stx\libbasic\AbstractSourceFileWriter.$(H) $(STCHDR)
 $(OUTDIR)ChangeSetDiff.$(O) ChangeSetDiff.$(H): ChangeSetDiff.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ChangeSetDiffComponent.$(O) ChangeSetDiffComponent.$(H): ChangeSetDiffComponent.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ClassOrganizer.$(O) ClassOrganizer.$(H): ClassOrganizer.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -136,6 +136,6 @@
 $(OUTDIR)MethodPackageChange.$(O) MethodPackageChange.$(H): MethodPackageChange.st $(INCLUDE_TOP)\stx\libbasic3\MethodChange.$(H) $(INCLUDE_TOP)\stx\libbasic3\ClassChange.$(H) $(INCLUDE_TOP)\stx\libbasic3\Change.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)MethodPrivacyChange.$(O) MethodPrivacyChange.$(H): MethodPrivacyChange.st $(INCLUDE_TOP)\stx\libbasic3\MethodChange.$(H) $(INCLUDE_TOP)\stx\libbasic3\ClassChange.$(H) $(INCLUDE_TOP)\stx\libbasic3\Change.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)MethodRemoveChange.$(O) MethodRemoveChange.$(H): MethodRemoveChange.st $(INCLUDE_TOP)\stx\libbasic3\MethodChange.$(H) $(INCLUDE_TOP)\stx\libbasic3\ClassChange.$(H) $(INCLUDE_TOP)\stx\libbasic3\Change.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(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) $(INCLUDE_TOP)\stx\libbasic\ConfigurableFeatures.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(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)
 
 # ENDMAKEDEPEND --- do not remove this line
--- a/bmake.bat	Sun Nov 18 19:46:19 2012 +0000
+++ b/bmake.bat	Fri Nov 30 17:20:01 2012 +0000
@@ -1,5 +1,5 @@
 @REM -------
-@REM make using borland bcc
+@REM make using Borland bcc32
 @REM type bmake, and wait...
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
--- a/lccmake.bat	Sun Nov 18 19:46:19 2012 +0000
+++ b/lccmake.bat	Fri Nov 30 17:20:01 2012 +0000
@@ -3,6 +3,6 @@
 @REM type lccmake, and wait...
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
-make.exe -N -f bc.mak USELCC=1 %*
+make.exe -N -f bc.mak -DUSELCC=1 %*
 
 
--- a/libInit.cc	Sun Nov 18 19:46:19 2012 +0000
+++ b/libInit.cc	Fri Nov 30 17:20:01 2012 +0000
@@ -1,5 +1,5 @@
 /*
- * $Header: /cvs/stx/stx/libbasic3/libInit.cc,v 1.97 2012/07/31 12:49:07 vrany Exp $
+ * $Header: /cvs/stx/stx/libbasic3/libInit.cc,v 1.98 2012/10/31 16:07:53 stefan Exp $
  *
  * DO NOT EDIT
  * automagically generated from the projectDefinition: stx_libbasic3.
--- a/libbasic3.rc	Sun Nov 18 19:46:19 2012 +0000
+++ b/libbasic3.rc	Fri Nov 30 17:20:01 2012 +0000
@@ -3,7 +3,7 @@
 // automagically generated from the projectDefinition: stx_libbasic3.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     6,2,1942,1942
+  FILEVERSION     6,2,1,73
   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 Additional Developer Basic Classes (LIB)\0"
-      VALUE "FileVersion", "6.2.1942.1942\0"
+      VALUE "FileVersion", "6.2.1.73\0"
       VALUE "InternalName", "stx:libbasic3\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", "Tue, 31 Jul 2012 12:47:40 GMT\0"
+      VALUE "ProductDate", "Wed, 31 Oct 2012 16:07:39 GMT\0"
     END
 
   END
--- a/mingwmake.bat	Sun Nov 18 19:46:19 2012 +0000
+++ b/mingwmake.bat	Fri Nov 30 17:20:01 2012 +0000
@@ -1,6 +1,8 @@
 @REM -------
-@REM make using mingw compiler
+@REM make using mingw gnu compiler
 @REM type mingwmake, and wait...
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
-make.exe -N -f bc.mak USEMINGW=1 %1 %2
+make.exe -N -f bc.mak -DUSEMINGW=1 %*
+
+
--- a/stx_libbasic3.st	Sun Nov 18 19:46:19 2012 +0000
+++ b/stx_libbasic3.st	Fri Nov 30 17:20:01 2012 +0000
@@ -36,13 +36,13 @@
 
 documentation
 "
-    Build-Information for creation of the st/x standard library: stx_libbasic3.
+    Build- and package information for creation of the st/x standard library: stx_libbasic3.
     This library contains source-code-management, packaging and history related stuff.
 "
 !
 
 extensionsVersion_SVN
-    ^ '$Id: stx_libbasic3.st 1957 2012-09-05 11:45:38Z vranyj1 $'
+    ^ '$Id: stx_libbasic3.st 1981 2012-11-30 17:20:01Z vranyj1 $'
 ! !
 
 !stx_libbasic3 class methodsFor:'description'!
@@ -188,7 +188,6 @@
         UserPreferences historyManagerAllowEditOfHistory
         UserPreferences managerPerMatchingModuleDefinitions
         UserPreferences managerPerMatchingModuleDefinitions:
-        'ConfigurableFeatures class' hasProjectChecker
     )
 ! !
 
@@ -237,15 +236,15 @@
 !stx_libbasic3 class methodsFor:'others'!
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/stx_libbasic3.st,v 1.72 2012/07/31 12:49:13 vrany Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic3/stx_libbasic3.st,v 1.74 2012/10/31 16:07:54 stefan Exp §'
 ! !
 
 !stx_libbasic3 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/stx_libbasic3.st,v 1.72 2012/07/31 12:49:13 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/stx_libbasic3.st,v 1.74 2012/10/31 16:07:54 stefan Exp $'
 !
 
 version_SVN
-    ^ '$Id:: stx_libbasic3.st 1957 2012-09-05 11:45:38Z vranyj1                                                                     $'
+    ^ '$Id:: stx_libbasic3.st 1981 2012-11-30 17:20:01Z vranyj1                                                                     $'
 ! !
--- a/vcmake.bat	Sun Nov 18 19:46:19 2012 +0000
+++ b/vcmake.bat	Fri Nov 30 17:20:01 2012 +0000
@@ -1,11 +1,11 @@
 @REM -------
-@REM make using microsoft visual c
+@REM make using Microsoft Visual C compiler
 @REM type vcmake, and wait...
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
 
 @if not defined VSINSTALLDIR (
-	call "C:\Program Files\Microsoft Visual Studio 10.0"\VC\bin\vcvars32.bat
+    call ..\rules\vcsetup.bat
 )
 make.exe -N -f bc.mak -DUSEVC %*