On Mon, Jan 6, 2014 at 4:40 PM, Tobias Pape <Das.Linux@gmx.de> wrote:
 
Before trying to shrink, check that there are _not_ the 8 Obsoletes I talked about in
<94EA41C1-42EF-462E-8883-A8999AA7CB03@gmx.de> (http://forum.world.st/Obsoletes-tp4732904p4732931.html)

Aha!

In the latest Trunk, there's only 6 obsolete classes, as the recent Environment changes fixed the two of them. The following script, adapted from your post above, cleans them up nicely:

" Fix obsolete ColorTheme"
ColorTheme current class isObsolete ifTrue: [
ColorTheme current: nil.
Smalltalk garbageCollect.
ColorTheme current].

" Fix obsolete uncle classes (cls->meta->super)"
(Smalltalk allClasses select: [:cls | cls theMetaClass superclass isObsolete]
) copy do: [:withObsoleteUncle | | cls2 |
cls2 := withObsoleteUncle addInstVarName: 'veryUnlikelyToExisitAnywhereInTheSystemAsVariableName'.
Smalltalk garbageCollect.
cls2 removeInstVarName: 'veryUnlikelyToExisitAnywhereInTheSystemAsVariableName'.].
Smalltalk garbageCollect.
Smalltalk fixObsoleteReferences.



Running "Smalltalk shrink" then complains about two obsolete behaviours, and I this is a bug with Installer. If I just close the debugger and inspector, collect garbage and then run "SystemNavigation default obsoleteBehaviors" I get an empty array. 

So it looks like the shrink works. It doesn't do much, though. My image goes from 20.9MB, down to 20.3MB. 

Colin