*** empty log message ***
authorClaus Gittinger <cg@exept.de>
Sat, 10 Jul 1999 12:43:40 +0200
changeset 2250 dc7a9ae0d6bb
parent 2249 fc17eb66cbec
child 2251 93ca87a4e576
*** empty log message ***
NewChangesBrowser.st
--- a/NewChangesBrowser.st	Fri Jul 09 23:25:29 1999 +0200
+++ b/NewChangesBrowser.st	Sat Jul 10 12:43:40 1999 +0200
@@ -22,11 +22,11 @@
     The future Changes Browser.
 
     [start with:]
-        NewChangesBrowser open
-        NewChangesBrowser openOnFile:aFileName
+	NewChangesBrowser open
+	NewChangesBrowser openOnFile:aFileName
 
     [author:]
-        Thomas Zwick, eXept Software AG
+	Thomas Zwick, eXept Software AG
 "
 
 
@@ -46,8 +46,8 @@
     "opens a Changes Browser with the changes of the aFileName"
 
     ^self new 
-        changeFileName:aFileName;
-        open
+	changeFileName:aFileName;
+	open
 
 ! !
 
@@ -184,8 +184,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'NewChangesBrowser applyFromLastSnapshotIcon'
-        ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@QDQ<@@@@@@@@@@AH"H@@@@@@@@@@@D"H @@@@@@@@@@@RH"@@@@@@@@@@@AH"H@@@@@@@@@@@@@@@@@@@@@@@@@<@@@@@@@@@@@@@@@@@@@@@@@;.;.; @@@@@@@@C.;.;.@@@@@@@@@@@@@@8@@N@@@@C?????C @@@N@@@O????<@@@8@@@@@@@@@C0@@@@8@@O????<O@@C @@@@?????0@@@@C @@@@@@@O@@@N@@@@DQDQDP<@C @@@@@_??DQ@@@@@@@@@A????D@@@@@@@@@DQDQDP@@@@C @@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 0 255 0 0 0 255 0 255 255 255 255 0 255 0 255 127 0 0 0 127 0 0 0 127 0 127 127 127 127 0 127 0 127 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@C<@@C<@@C<@@C<@@C<@@A<@@D@@?<@@?<@@?<LC?<\C?<\C?<8O?08O?10O?10??C ??[@??_@?<^@?<_@?<_@') ; yourself); yourself]!
+	constantNamed:#'NewChangesBrowser applyFromLastSnapshotIcon'
+	ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@QDQ<@@@@@@@@@@AH"H@@@@@@@@@@@D"H @@@@@@@@@@@RH"@@@@@@@@@@@AH"H@@@@@@@@@@@@@@@@@@@@@@@@@<@@@@@@@@@@@@@@@@@@@@@@@;.;.; @@@@@@@@C.;.;.@@@@@@@@@@@@@@8@@N@@@@C?????C @@@N@@@O????<@@@8@@@@@@@@@C0@@@@8@@O????<O@@C @@@@?????0@@@@C @@@@@@@O@@@N@@@@DQDQDP<@C @@@@@_??DQ@@@@@@@@@A????D@@@@@@@@@DQDQDP@@@@C @@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 0 255 0 0 0 255 0 255 255 255 255 0 255 0 255 127 0 0 0 127 0 0 0 127 0 127 127 127 127 0 127 0 127 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@C<@@C<@@C<@@C<@@C<@@A<@@D@@?<@@?<@@?<LC?<\C?<\C?<8O?08O?10O?10??C ??[@??_@?<^@?<_@?<_@') ; yourself); yourself]!
 
 applyIcon
     "This resource specification was automatically generated
@@ -201,8 +201,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'NewChangesBrowser applyIcon'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'UUUUUUUPUUUUUUUPUUUUUUU[UUUUUUUPP@@@@@@QQUUUUUTPQUUUUUTVQ**UUUTPQUUUUUTPQUUUUUTXQ***UUTPQ**UUUTPQ*****TPQ***%UTPQ****)TPQUUUUUTPQUUUUUTUP@@@@@@PUUUUUUUPUUUUUUUPUUUUUUUPUUUUUUUP') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 255 0 0]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]!
+	constantNamed:#'NewChangesBrowser applyIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'UUUUUUUPUUUUUUUPUUUUUUU[UUUUUUUPP@@@@@@QQUUUUUTPQUUUUUTVQ**UUUTPQUUUUUTPQUUUUUTXQ***UUTPQ**UUUTPQ*****TPQ***%UTPQ****)TPQUUUUUTPQUUUUUTUP@@@@@@PUUUUUUUPUUUUUUUPUUUUUUUPUUUUUUUP') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 255 0 0]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]!
 
 applyToEndIcon
     "This resource specification was automatically generated
@@ -218,8 +218,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'NewChangesBrowser applyToEndIcon'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@B** H@@@B** H@@@@@@ @@@@**( @@@@**(@J@@@@@H@@@@O??H@@@@O??@@@@@@@C@H@@C??3@@ @C??0@ @@@@@0@B@@UUT0B@K@UUT@@H@@@@D@H@CEUUDB@@JG?U@@@@MG?=@@@@@EUU@@B@@@@@@@@@H') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@C?0@C?0@C?0@O?0@O?0@O?0@??@@??@@??LC?<\C?<\C?<8O?08O?10O?10??C ??[@??_@?<^@?<_@?<_@') ; yourself); yourself]!
+	constantNamed:#'NewChangesBrowser applyToEndIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@B** H@@@B** H@@@@@@ @@@@**( @@@@**(@J@@@@@H@@@@O??H@@@@O??@@@@@@@C@H@@C??3@@ @C??0@ @@@@@0@B@@UUT0B@K@UUT@@H@@@@D@H@CEUUDB@@JG?U@@@@MG?=@@@@@EUU@@B@@@@@@@@@H') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@C?0@C?0@C?0@O?0@O?0@O?0@??@@??@@??LC?<\C?<\C?<8O?08O?10O?10??C ??[@??_@?<^@?<_@?<_@') ; yourself); yourself]!
 
 compressIcon
     "This resource specification was automatically generated
@@ -235,8 +235,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'NewChangesBrowser compressIcon'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@????<@@@:***(@@@8@@@8@@@8@@@8@@@@@@@8@@@@@@@8A@@@@@@8@@:**0@8HC**+@@8@@@@@@@8H@@@@@@8@@@@@@@8@@@@@@@8@@@@@@@8@@C????8@@C****(@@@@@@@@H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 124 124 124 170 170 170 255 255 255]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@??0A??8A??8A??8A8A8G>A8@@A8G?98O?18_?!!8??A8@@A8G>A8@0A8C??8C??8C??8C??0@0@@D2@@G>@@D2@@') ; yourself); yourself]!
+	constantNamed:#'NewChangesBrowser compressIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@????<@@@:***(@@@8@@@8@@@8@@@8@@@@@@@8@@@@@@@8A@@@@@@8@@:**0@8HC**+@@8@@@@@@@8H@@@@@@8@@@@@@@8@@@@@@@8@@@@@@@8@@C????8@@C****(@@@@@@@@H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 124 124 124 170 170 170 255 255 255]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@??0A??8A??8A??8A8A8G>A8@@A8G?98O?18_?!!8??A8@@A8G>A8@0A8C??8C??8C??8C??0@0@@D2@@G>@@D2@@') ; yourself); yourself]!
 
 deleteIcon
     "This resource specification was automatically generated
@@ -252,8 +252,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'NewChangesBrowser deleteIcon'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@AUUUU@@OA??UU@@@AUUUU@@@AUUUU@B@A???U@H@A??5U@@@A???0@@@AUUUB@B@@@@@@@@@@@@@A@BK@@@@A_:@@@@@AO2G@@@@AL2@@@@@AL2C@@@@AL2@@@@@AL2@@@@@AL2H@@@@AL2@@@@@A\:@@@@@H_8 @@@@@@@H') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'_?<@_?<@_?<P_?<P_?<X_?<X_?<H_? H_?O<_?XL@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@G0') ; yourself); yourself]!
+	constantNamed:#'NewChangesBrowser deleteIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@AUUUU@@OA??UU@@@AUUUU@@@AUUUU@B@A???U@H@A??5U@@@A???0@@@AUUUB@B@@@@@@@@@@@@@A@BK@@@@A_:@@@@@AO2G@@@@AL2@@@@@AL2C@@@@AL2@@@@@AL2@@@@@AL2H@@@@AL2@@@@@A\:@@@@@H_8 @@@@@@@H') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'_?<@_?<@_?<P_?<P_?<X_?<X_?<H_? H_?O<_?XL@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@G0') ; yourself); yourself]!
 
 deleteToEndIcon
     "This resource specification was automatically generated
@@ -269,8 +269,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'NewChangesBrowser deleteToEndIcon'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@B** @@O@B** @@@@@@@ @@@@??< @B@@??<@@H@@@@L@@@@EUUL@@@@G?U@B@B@G?=@@@@@EUU@A@BK@@@@A_:@@@@@AO2G@@@@AL2@@@@@AL2C@@@@AL2@@@@@AL2@@@@@AL2H@@@@AL2@@@@@A\:@@@@@H_8 @@@@@@@H') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C?0@C?0@C?0PO?0PO?0XO?0X??@H??@H??O<?<XL?<_<?<_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@G0') ; yourself); yourself]!
+	constantNamed:#'NewChangesBrowser deleteToEndIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@B** @@O@B** @@@@@@@ @@@@??< @B@@??<@@H@@@@L@@@@EUUL@@@@G?U@B@B@G?=@@@@@EUU@A@BK@@@@A_:@@@@@AO2G@@@@AL2@@@@@AL2C@@@@AL2@@@@@AL2@@@@@AL2H@@@@AL2@@@@@A\:@@@@@H_8 @@@@@@@H') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C?0@C?0@C?0PO?0PO?0XO?0X??@H??@H??O<?<XL?<_<?<_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@G0') ; yourself); yourself]!
 
 findLastSnapshotIcon
     "This resource specification was automatically generated
@@ -286,8 +286,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'NewChangesBrowser findLastSnapshotIcon'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@EUUUW@A@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@A@F***(@M@F***(@H@F***(@@@F***(@@@F***(@I@L@@@@@@@@@@@@@A@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??B@@@B@C@B@G B@O0@@_8@@G @@G @@G @') ; yourself); yourself]!
+	constantNamed:#'NewChangesBrowser findLastSnapshotIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@EUUUW@A@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@A@F***(@M@F***(@H@F***(@@@F***(@@@F***(@I@L@@@@@@@@@@@@@A@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??B@@@B@C@B@G B@O0@@_8@@G @@G @@G @') ; yourself); yourself]!
 
 findNextSnapshotIcon
     "This resource specification was automatically generated
@@ -303,8 +303,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'NewChangesBrowser findNextSnapshotIcon'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@DA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D@B@@@@@@@@@@@@@@@E@@@@@@@@@EUUUW@N@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@V***(@H@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@L@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@G @@G @@G @@_8@@O0@@G @@C@@@@@@C??@C??@C??@C??@C??@C??BC??BC??BC??BC??@C??@C??@C??@C??@') ; yourself); yourself]! !
+	constantNamed:#'NewChangesBrowser findNextSnapshotIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@DA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D@B@@@@@@@@@@@@@@@E@@@@@@@@@EUUUW@N@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@V***(@H@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@L@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@G @@G @@G @@_8@@O0@@G @@C@@@@@@C??@C??@C??@C??@C??@C??BC??BC??BC??BC??@C??@C??@C??@C??@') ; yourself); yourself]! !
 
 !NewChangesBrowser class methodsFor:'interface specs'!
 
@@ -326,204 +326,203 @@
     ^
      
        #(#FullSpec
-          #window: 
-           #(#WindowSpec
-              #name: 'Changes Browser'
-              #layout: #(#LayoutFrame 53 0 92 0 687 0 583 0)
-              #label: 'Changes Browser'
-              #min: #(#Point 10 10)
-              #max: #(#Point 1152 900)
-              #bounds: #(#Rectangle 53 92 688 584)
-              #menu: #menu
-              #usePreferredExtent: false
-          )
-          #component: 
-           #(#SpecCollection
-              #collection: 
-               #(
-                 #(#MenuPanelSpec
-                    #name: 'menuToolbarView'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 32 0)
-                    #menu: #menuToolbar
-                    #style: #(#FontDescription #helvetica #medium #roman 10)
-                    #showSeparatingLines: true
-                )
-                 #(#VariableVerticalPanelSpec
-                    #name: 'variableVerticalPanel1'
-                    #layout: #(#LayoutFrame 0 0.0 34 0 0 1.0 -26 1.0)
-                    #component: 
-                     #(#SpecCollection
-                        #collection: 
-                         #(
-                           #(#ViewSpec
-                              #name: 'Box1'
-                              #component: 
-                               #(#SpecCollection
-                                  #collection: 
-                                   #(
-                                     #(#DataSetSpec
-                                        #name: 'changesDataSetView'
-                                        #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -28 1.0)
-                                        #model: #selectionOfChange
-                                        #menu: #menuTable
-                                        #hasHorizontalScrollBar: true
-                                        #hasVerticalScrollBar: true
-                                        #miniScrollerHorizontal: true
-                                        #dataList: #listOfChanges
-                                        #useIndex: false
-                                        #has3Dsepartors: true
-                                        #doubleClickSelector: #doBrowseClass
-                                        #columnHolder: #listOfChangeColumns
-                                        #valueChangeSelector: #changeSelected:
-                                    )
-                                     #(#ViewSpec
-                                        #name: 'Box2'
-                                        #layout: #(#LayoutFrame 0 0.0 -28 1 0 1.0 0 1.0)
-                                        #component: 
-                                         #(#SpecCollection
-                                            #collection: 
-                                             #(
-                                               #(#LabelSpec
-                                                  #name: 'filterLabel'
-                                                  #layout: #(#AlignmentOrigin 37 0 13 0.0 1 0.5)
-                                                  #label: 'Filter:'
-                                                  #style: #(#FontDescription #helvetica #medium #roman 10)
-                                                  #adjust: #left
-                                              )
-                                               #(#InputFieldSpec
-                                                  #name: 'filterField'
-                                                  #layout: #(#LayoutFrame 41 0.0 3 0 250 0 25 0)
-                                                  #activeHelpKey: #filterField
-                                                  #model: #valueOfFilter
-                                                  #immediateAccept: false
-                                              )
-                                               #(#ProgressIndicatorSpec
-                                                  #name: 'readProgressIndicator'
-                                                  #layout: #(#LayoutFrame 41 0 3 0 250 0 25 0)
-                                                  #model: #valueOfReadProgress
-                                                  #foregroundColor: #(#Color 0.0 60.0 60.0)
-                                              )
-                                               #(#ActionButtonSpec
-                                                  #name: 'allButton'
-                                                  #layout: #(#LayoutFrame 258 0.0 2 0.0 268 0 13 0)
-                                                  #label: ' '
-                                                  #model: #doFilter:
-                                                  #actionValue: ''
-                                              )
-                                               #(#LabelSpec
-                                                  #name: 'allLabel'
-                                                  #layout: #(#LayoutFrame 273 0 0 0.0 310 0 14 0)
-                                                  #label: '= all'
-                                                  #translateLabel: true
-                                                  #style: #(#FontDescription #helvetica #medium #roman 10)
-                                                  #adjust: #left
-                                              )
-                                               #(#ActionButtonSpec
-                                                  #name: 'methodChangesButton'
-                                                  #layout: #(#LayoutFrame 359 0.0 2 0.0 369 0 13 0)
-                                                  #label: ' '
-                                                  #backgroundColor: #(#Color 100.0 100.0 100.0)
-                                                  #model: #doFilterType:
-                                                  #actionValue: 'method'
-                                              )
-                                               #(#LabelSpec
-                                                  #name: 'methodChangesLabel'
-                                                  #layout: #(#LayoutFrame 373 0 0 0.0 458 0 14 0)
-                                                  #label: '= method'
-                                                  #translateLabel: true
-                                                  #style: #(#FontDescription #helvetica #medium #roman 10)
-                                                  #adjust: #left
-                                              )
-                                               #(#ActionButtonSpec
-                                                  #name: 'classChangesButton'
-                                                  #layout: #(#LayoutFrame 455 0.0 2 0.0 465 0 13 0)
-                                                  #label: ' '
-                                                  #backgroundColor: #(#Color 50.0008 50.0008 50.0008)
-                                                  #model: #doFilterType:
-                                                  #actionValue: 'class'
-                                              )
-                                               #(#LabelSpec
-                                                  #name: 'classChangesLabel'
-                                                  #layout: #(#LayoutFrame 470 0 0 0.0 580 0 14 0)
-                                                  #label: '= class change'
-                                                  #translateLabel: true
-                                                  #style: #(#FontDescription #helvetica #medium #roman 10)
-                                                  #adjust: #left
-                                              )
-                                               #(#ActionButtonSpec
-                                                  #name: 'snapshotButton'
-                                                  #layout: #(#LayoutFrame 258 0.0 16 0.0 268 0 27 0)
-                                                  #label: ' '
-                                                  #backgroundColor: #(#Color 100.0 0.0 0.0)
-                                                  #model: #doFilterType:
-                                                  #actionValue: 'image'
-                                              )
-                                               #(#LabelSpec
-                                                  #name: 'snapshotLabel'
-                                                  #layout: #(#LayoutFrame 273 0 14 0.0 355 0 28 0)
-                                                  #label: '= snapshot'
-                                                  #translateLabel: true
-                                                  #style: #(#FontDescription #helvetica #medium #roman 10)
-                                                  #adjust: #left
-                                              )
-                                               #(#ActionButtonSpec
-                                                  #name: 'fileInButton'
-                                                  #layout: #(#LayoutFrame 359 0.0 16 0.0 369 0 27 0)
-                                                  #label: ' '
-                                                  #backgroundColor: #(#Color 0.0 80.0 80.0)
-                                                  #model: #doFilterSourceType:
-                                                  #actionValue: '* file*'
-                                              )
-                                               #(#LabelSpec
-                                                  #name: 'fileInLabel'
-                                                  #layout: #(#LayoutFrame 374 0 14 0.0 440 0 28 0)
-                                                  #label: '= fileIn'
-                                                  #translateLabel: true
-                                                  #style: #(#FontDescription #helvetica #medium #roman 10)
-                                                  #adjust: #left
-                                              )
-                                               #(#ActionButtonSpec
-                                                  #name: 'checkInButton'
-                                                  #layout: #(#LayoutFrame 455 0.0 16 0.0 465 0 27 0)
-                                                  #label: ' '
-                                                  #backgroundColor: #(#Color 0.0 0.0 100.0)
-                                                  #model: #doFilterSourceType:
-                                                  #actionValue: '* checkin*'
-                                              )
-                                               #(#LabelSpec
-                                                  #name: 'checkInLabel'
-                                                  #layout: #(#LayoutFrame 470 0 14 0.0 550 0 28 0)
-                                                  #label: '= checkIn'
-                                                  #translateLabel: true
-                                                  #style: #(#FontDescription #helvetica #medium #roman 10)
-                                                  #adjust: #left
-                                              )
-                                            )
-                                        )
-                                    )
-                                  )
-                              )
-                          )
-                           #(#WorkspaceSpec
-                              #name: 'changeTextEditor'
-                              #model: #valueOfChangeText
-                              #hasHorizontalScrollBar: true
-                              #hasVerticalScrollBar: true
-                              #miniScrollerHorizontal: true
-                              #isReadOnly: true
-                          )
-                        )
-                    )
-                    #handles: #(#Any 0.5 1.0)
-                )
-                 #(#UISubSpecification
-                    #name: 'windowSpecForInfoBar'
-                    #layout: #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0)
-                    #majorKey: #ToolApplicationModel
-                    #minorKey: #windowSpecForInfoBar
-                )
-              )
-          )
+	  #window: 
+	   #(#WindowSpec
+	      #name: 'Changes Browser'
+	      #layout: #(#LayoutFrame 53 0 92 0 687 0 583 0)
+	      #label: 'Changes Browser'
+	      #min: #(#Point 10 10)
+	      #max: #(#Point 1152 900)
+	      #bounds: #(#Rectangle 53 92 688 584)
+	      #menu: #menu
+	      #usePreferredExtent: false
+	  )
+	  #component: 
+	   #(#SpecCollection
+	      #collection: 
+	       #(
+		 #(#MenuPanelSpec
+		    #name: 'menuToolbarView'
+		    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 32 0)
+		    #menu: #menuToolbar
+		    #style: #(#FontDescription #helvetica #medium #roman 10)
+		    #showSeparatingLines: true
+		)
+		 #(#VariableVerticalPanelSpec
+		    #name: 'variableVerticalPanel1'
+		    #layout: #(#LayoutFrame 0 0.0 34 0 0 1.0 -26 1.0)
+		    #component: 
+		     #(#SpecCollection
+			#collection: 
+			 #(
+			   #(#ViewSpec
+			      #name: 'Box1'
+			      #component: 
+			       #(#SpecCollection
+				  #collection: 
+				   #(
+				     #(#DataSetSpec
+					#name: 'changesDataSetView'
+					#layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -28 1.0)
+					#model: #selectionOfChange
+					#menu: #menuTable
+					#hasHorizontalScrollBar: true
+					#hasVerticalScrollBar: true
+					#miniScrollerHorizontal: true
+					#dataList: #listOfChanges
+					#useIndex: false
+					#has3Dsepartors: true
+					#doubleClickSelector: #doBrowseClass
+					#columnHolder: #listOfChangeColumns
+					#valueChangeSelector: #changeSelected:
+				    )
+				     #(#ViewSpec
+					#name: 'Box2'
+					#layout: #(#LayoutFrame 0 0.0 -28 1 0 1.0 0 1.0)
+					#component: 
+					 #(#SpecCollection
+					    #collection: 
+					     #(
+					       #(#LabelSpec
+						  #name: 'filterLabel'
+						  #layout: #(#AlignmentOrigin 37 0 13 0.0 1 0.5)
+						  #label: 'Filter:'
+						  #style: #(#FontDescription #helvetica #medium #roman 10)
+						  #adjust: #left
+					      )
+					       #(#InputFieldSpec
+						  #name: 'filterField'
+						  #layout: #(#LayoutFrame 41 0.0 3 0 250 0 25 0)
+						  #activeHelpKey: #filterField
+						  #model: #valueOfFilter
+						  #immediateAccept: false
+					      )
+					       #(#ProgressIndicatorSpec
+						  #name: 'readProgressIndicator'
+						  #layout: #(#LayoutFrame 41 0 3 0 250 0 25 0)
+						  #model: #valueOfReadProgress
+						  #foregroundColor: #(#Color 0.0 60.0 60.0)
+					      )
+					       #(#ActionButtonSpec
+						  #name: 'allButton'
+						  #layout: #(#LayoutFrame 258 0.0 2 0.0 268 0 13 0)
+						  #label: ' '
+						  #model: #doFilter:
+					      )
+					       #(#LabelSpec
+						  #name: 'allLabel'
+						  #layout: #(#LayoutFrame 273 0 0 0.0 310 0 14 0)
+						  #label: '= all'
+						  #translateLabel: true
+						  #style: #(#FontDescription #helvetica #medium #roman 10)
+						  #adjust: #left
+					      )
+					       #(#ActionButtonSpec
+						  #name: 'methodChangesButton'
+						  #layout: #(#LayoutFrame 359 0.0 2 0.0 369 0 13 0)
+						  #label: ' '
+						  #backgroundColor: #(#Color 100.0 100.0 100.0)
+						  #model: #doFilterType:
+						  #actionValue: 'method'
+					      )
+					       #(#LabelSpec
+						  #name: 'methodChangesLabel'
+						  #layout: #(#LayoutFrame 373 0 0 0.0 458 0 14 0)
+						  #label: '= method'
+						  #translateLabel: true
+						  #style: #(#FontDescription #helvetica #medium #roman 10)
+						  #adjust: #left
+					      )
+					       #(#ActionButtonSpec
+						  #name: 'classChangesButton'
+						  #layout: #(#LayoutFrame 455 0.0 2 0.0 465 0 13 0)
+						  #label: ' '
+						  #backgroundColor: #(#Color 50.0008 50.0008 50.0008)
+						  #model: #doFilterType:
+						  #actionValue: 'class'
+					      )
+					       #(#LabelSpec
+						  #name: 'classChangesLabel'
+						  #layout: #(#LayoutFrame 470 0 0 0.0 580 0 14 0)
+						  #label: '= class change'
+						  #translateLabel: true
+						  #style: #(#FontDescription #helvetica #medium #roman 10)
+						  #adjust: #left
+					      )
+					       #(#ActionButtonSpec
+						  #name: 'snapshotButton'
+						  #layout: #(#LayoutFrame 258 0.0 16 0.0 268 0 27 0)
+						  #label: ' '
+						  #backgroundColor: #(#Color 100.0 0.0 0.0)
+						  #model: #doFilterType:
+						  #actionValue: 'image'
+					      )
+					       #(#LabelSpec
+						  #name: 'snapshotLabel'
+						  #layout: #(#LayoutFrame 273 0 14 0.0 355 0 28 0)
+						  #label: '= snapshot'
+						  #translateLabel: true
+						  #style: #(#FontDescription #helvetica #medium #roman 10)
+						  #adjust: #left
+					      )
+					       #(#ActionButtonSpec
+						  #name: 'fileInButton'
+						  #layout: #(#LayoutFrame 359 0.0 16 0.0 369 0 27 0)
+						  #label: ' '
+						  #backgroundColor: #(#Color 0.0 80.0 80.0)
+						  #model: #doFilterSourceType:
+						  #actionValue: '* file*'
+					      )
+					       #(#LabelSpec
+						  #name: 'fileInLabel'
+						  #layout: #(#LayoutFrame 374 0 14 0.0 440 0 28 0)
+						  #label: '= fileIn'
+						  #translateLabel: true
+						  #style: #(#FontDescription #helvetica #medium #roman 10)
+						  #adjust: #left
+					      )
+					       #(#ActionButtonSpec
+						  #name: 'checkInButton'
+						  #layout: #(#LayoutFrame 455 0.0 16 0.0 465 0 27 0)
+						  #label: ' '
+						  #backgroundColor: #(#Color 0.0 0.0 100.0)
+						  #model: #doFilterSourceType:
+						  #actionValue: '* checkin*'
+					      )
+					       #(#LabelSpec
+						  #name: 'checkInLabel'
+						  #layout: #(#LayoutFrame 470 0 14 0.0 550 0 28 0)
+						  #label: '= checkIn'
+						  #translateLabel: true
+						  #style: #(#FontDescription #helvetica #medium #roman 10)
+						  #adjust: #left
+					      )
+					    )
+					)
+				    )
+				  )
+			      )
+			  )
+			   #(#WorkspaceSpec
+			      #name: 'changeTextEditor'
+			      #model: #valueOfChangeText
+			      #hasHorizontalScrollBar: true
+			      #hasVerticalScrollBar: true
+			      #miniScrollerHorizontal: true
+			      #isReadOnly: true
+			  )
+			)
+		    )
+		    #handles: #(#Any 0.5 1.0)
+		)
+		 #(#UISubSpecification
+		    #name: 'windowSpecForInfoBar'
+		    #layout: #(#LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0)
+		    #majorKey: #ToolApplicationModel
+		    #minorKey: #windowSpecForInfoBar
+		)
+	      )
+	  )
       )
 
     "Modified: / 19.5.1998 / 18:58:47 / cg"
@@ -546,58 +545,58 @@
 
 
     ^ #(
-        #(#DataSetColumnSpec
-           #rendererType: #rowSelector
-           #backgroundSelector: #listColor
-           #showSelectionHighLighted: false
+	#(#DataSetColumnSpec
+	   #rendererType: #rowSelector
+	   #backgroundSelector: #listColor
+	   #showSelectionHighLighted: false
        )
-        #(#DataSetColumnSpec
-           #label: 'Change'
-           #id: #change
-           #translateLabel: true
-           #labelAlignment: #left
-           #model: #string
-           #canSelect: false
+	#(#DataSetColumnSpec
+	   #label: 'Change'
+	   #id: #change
+	   #translateLabel: true
+	   #labelAlignment: #left
+	   #model: #string
+	   #canSelect: false
        )
-        #(#DataSetColumnSpec
-           #label: 'Category'
-           #id: #category
-           #translateLabel: true
-           #labelAlignment: #left
-           #model: #category
-           #canSelect: false
+	#(#DataSetColumnSpec
+	   #label: 'Category'
+	   #id: #category
+	   #translateLabel: true
+	   #labelAlignment: #left
+	   #model: #category
+	   #canSelect: false
        )
-        #(#DataSetColumnSpec
-           #label: 'Delta Info'
-           #id: #deltaInfo
-           #translateLabel: true
-           #labelAlignment: #left
-           #model: #delta
-           #canSelect: false
+	#(#DataSetColumnSpec
+	   #label: 'Delta Info'
+	   #id: #deltaInfo
+	   #translateLabel: true
+	   #labelAlignment: #left
+	   #model: #delta
+	   #canSelect: false
        )
-        #(#DataSetColumnSpec
-           #label: 'Time Stamp'
-           #id: #timeStamp
-           #translateLabel: true
-           #labelAlignment: #left
-           #model: #timeStamp
-           #canSelect: false
+	#(#DataSetColumnSpec
+	   #label: 'Time Stamp'
+	   #id: #timeStamp
+	   #translateLabel: true
+	   #labelAlignment: #left
+	   #model: #timeStamp
+	   #canSelect: false
        )
-        #(#DataSetColumnSpec
-           #label: 'Type'
-           #id: #type
-           #translateLabel: true
-           #labelAlignment: #left
-           #model: #type
-           #canSelect: false
+	#(#DataSetColumnSpec
+	   #label: 'Type'
+	   #id: #type
+	   #translateLabel: true
+	   #labelAlignment: #left
+	   #model: #type
+	   #canSelect: false
        )
-        #(#DataSetColumnSpec
-           #label: 'Position'
-           #id: #position
-           #translateLabel: true
-           #labelAlignment: #left
-           #model: #positions
-           #canSelect: false
+	#(#DataSetColumnSpec
+	   #label: 'Position'
+	   #id: #position
+	   #translateLabel: true
+	   #labelAlignment: #left
+	   #model: #positions
+	   #canSelect: false
        )
      )
 ! !
@@ -622,329 +621,329 @@
      
        #(#Menu
           
-           #(
-             #(#MenuItem
-                #label: 'About'
-                #translateLabel: true
-                #activeHelpKey: #about
-                #labelImage: #(#ResourceRetriever nil #menuIcon)
-                #submenuChannel: #menuAbout
-            )
-             #(#MenuItem
-                #label: 'File'
-                #translateLabel: true
-                #activeHelpKey: #file
-                #submenu: 
-                 #(#Menu
+	   #(
+	     #(#MenuItem
+		#label: 'About'
+		#translateLabel: true
+		#activeHelpKey: #about
+		#labelImage: #(#ResourceRetriever nil #menuIcon)
+		#submenuChannel: #menuAbout
+	    )
+	     #(#MenuItem
+		#label: 'File'
+		#translateLabel: true
+		#activeHelpKey: #file
+		#submenu: 
+		 #(#Menu
                     
-                     #(
-                       #(#MenuItem
-                          #label: 'Reload'
-                          #translateLabel: true
-                          #value: #doReload
-                          #activeHelpKey: #fileReload
-                          #enabled: #valueOfNotReading
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Load...'
-                          #translateLabel: true
-                          #value: #doLoad
-                          #activeHelpKey: #fileLoad
-                          #enabled: #valueOfNotSaving
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Save'
-                          #translateLabel: true
-                          #value: #doSave
-                          #activeHelpKey: #fileSave
-                          #enabled: #valueOfNotReading
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Browse Class'
-                          #translateLabel: true
-                          #value: #doBrowseClass
-                          #activeHelpKey: #fileBrowseClass
-                          #enabled: #valueOfHavingChangeSelection
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Exit'
-                          #translateLabel: true
-                          #value: #closeRequest
-                          #activeHelpKey: #fileExit
-                          #enabled: #valueOfNotSaving
-                      )
-                    ) nil
-                    nil
-                )
-            )
-             #(#MenuItem
-                #label: 'Apply'
-                #translateLabel: true
-                #submenu: 
-                 #(#Menu
+		     #(
+		       #(#MenuItem
+			  #label: 'Reload'
+			  #translateLabel: true
+			  #value: #doReload
+			  #activeHelpKey: #fileReload
+			  #enabled: #valueOfNotReading
+		      )
+		       #(#MenuItem
+			  #label: '-'
+		      )
+		       #(#MenuItem
+			  #label: 'Load...'
+			  #translateLabel: true
+			  #value: #doLoad
+			  #activeHelpKey: #fileLoad
+			  #enabled: #valueOfNotSaving
+		      )
+		       #(#MenuItem
+			  #label: '-'
+		      )
+		       #(#MenuItem
+			  #label: 'Save'
+			  #translateLabel: true
+			  #value: #doSave
+			  #activeHelpKey: #fileSave
+			  #enabled: #valueOfNotReading
+		      )
+		       #(#MenuItem
+			  #label: '-'
+		      )
+		       #(#MenuItem
+			  #label: 'Browse Class'
+			  #translateLabel: true
+			  #value: #doBrowseClass
+			  #activeHelpKey: #fileBrowseClass
+			  #enabled: #valueOfHavingChangeSelection
+		      )
+		       #(#MenuItem
+			  #label: '-'
+		      )
+		       #(#MenuItem
+			  #label: 'Exit'
+			  #translateLabel: true
+			  #value: #closeRequest
+			  #activeHelpKey: #fileExit
+			  #enabled: #valueOfNotSaving
+		      )
+		    ) nil
+		    nil
+		)
+	    )
+	     #(#MenuItem
+		#label: 'Apply'
+		#translateLabel: true
+		#submenu: 
+		 #(#Menu
                     
-                     #(
-                       #(#MenuItem
-                          #label: 'Change'
-                          #translateLabel: true
-                          #value: #doApply
-                          #activeHelpKey: #applyLine
-                          #enabled: #valueOfHavingChangeSelection
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'All'
-                          #translateLabel: true
-                          #value: #doApplyAll
-                          #activeHelpKey: #applyAll
-                          #enabled: #valueOfNotReading
-                      )
-                       #(#MenuItem
-                          #label: 'To End'
-                          #translateLabel: true
-                          #value: #doApplyToEnd
-                          #activeHelpKey: #applyToEnd
-                          #enabled: #valueOfHavingSelection
-                      )
-                       #(#MenuItem
-                          #label: 'All for Class'
-                          #translateLabel: true
-                          #value: #doApplyAllForClass
-                          #activeHelpKey: #applyForClassToEnd
-                          #enabled: #valueOfHavingChangeSelection
-                      )
-                       #(#MenuItem
-                          #label: 'For Class to End'
-                          #translateLabel: true
-                          #value: #doApplyForClassToEnd
-                          #activeHelpKey: #applyForClassToEnd
-                          #enabled: #valueOfHavingChangeSelection
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'From last Snapshot'
-                          #translateLabel: true
-                          #value: #doApplyFromLastSnapshot
-                          #activeHelpKey: #applyFromLastSnapshot
-                          #enabled: #valueOfNotReading
-                      )
-                    ) nil
-                    nil
-                )
-            )
-             #(#MenuItem
-                #label: 'Delete'
-                #translateLabel: true
-                #activeHelpKey: #edit
-                #submenu: 
-                 #(#Menu
+		     #(
+		       #(#MenuItem
+			  #label: 'Change'
+			  #translateLabel: true
+			  #value: #doApply
+			  #activeHelpKey: #applyLine
+			  #enabled: #valueOfHavingChangeSelection
+		      )
+		       #(#MenuItem
+			  #label: '-'
+		      )
+		       #(#MenuItem
+			  #label: 'All'
+			  #translateLabel: true
+			  #value: #doApplyAll
+			  #activeHelpKey: #applyAll
+			  #enabled: #valueOfNotReading
+		      )
+		       #(#MenuItem
+			  #label: 'To End'
+			  #translateLabel: true
+			  #value: #doApplyToEnd
+			  #activeHelpKey: #applyToEnd
+			  #enabled: #valueOfHavingSelection
+		      )
+		       #(#MenuItem
+			  #label: 'All for Class'
+			  #translateLabel: true
+			  #value: #doApplyAllForClass
+			  #activeHelpKey: #applyForClassToEnd
+			  #enabled: #valueOfHavingChangeSelection
+		      )
+		       #(#MenuItem
+			  #label: 'For Class to End'
+			  #translateLabel: true
+			  #value: #doApplyForClassToEnd
+			  #activeHelpKey: #applyForClassToEnd
+			  #enabled: #valueOfHavingChangeSelection
+		      )
+		       #(#MenuItem
+			  #label: '-'
+		      )
+		       #(#MenuItem
+			  #label: 'From last Snapshot'
+			  #translateLabel: true
+			  #value: #doApplyFromLastSnapshot
+			  #activeHelpKey: #applyFromLastSnapshot
+			  #enabled: #valueOfNotReading
+		      )
+		    ) nil
+		    nil
+		)
+	    )
+	     #(#MenuItem
+		#label: 'Delete'
+		#translateLabel: true
+		#activeHelpKey: #edit
+		#submenu: 
+		 #(#Menu
                     
-                     #(
-                       #(#MenuItem
-                          #label: 'Change'
-                          #translateLabel: true
-                          #value: #doDelete
-                          #activeHelpKey: #deleteLine
-                          #enabled: #valueOfHavingSelection
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'All'
-                          #translateLabel: true
-                          #value: #doDeleteAll
-                          #activeHelpKey: #deleteAll
-                          #enabled: #valueOfNotReading
-                      )
-                       #(#MenuItem
-                          #label: 'To End'
-                          #translateLabel: true
-                          #value: #doDeleteToEnd
-                          #activeHelpKey: #deleteToEnd
-                          #enabled: #valueOfHavingSelection
-                      )
-                       #(#MenuItem
-                          #label: 'All for Class'
-                          #translateLabel: true
-                          #value: #doDeleteAllForClass
-                          #activeHelpKey: #applyForClassToEnd
-                          #enabled: #valueOfHavingChangeSelection
-                      )
-                       #(#MenuItem
-                          #label: 'For Class to End'
-                          #translateLabel: true
-                          #value: #doDeleteForClassToEnd
-                          #activeHelpKey: #deleteForClassToEnd
-                          #enabled: #valueOfHavingChangeSelection
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Compress'
-                          #translateLabel: true
-                          #value: #doCompress
-                          #activeHelpKey: #deleteCompress
-                          #enabled: #valueOfNotReading
-                      )
-                       #(#MenuItem
-                          #label: 'Compress for Class'
-                          #translateLabel: true
-                          #value: #doCompressForClass
-                          #activeHelpKey: #deleteCompressForClass
-                          #enabled: #valueOfHavingChangeSelection
-                      )
-                    ) nil
-                    nil
-                )
-            )
-             #(#MenuItem
-                #label: 'Test'
-                #translateLabel: true
-                #activeHelpKey: #test
-                #submenu: 
-                 #(#Menu
+		     #(
+		       #(#MenuItem
+			  #label: 'Change'
+			  #translateLabel: true
+			  #value: #doDelete
+			  #activeHelpKey: #deleteLine
+			  #enabled: #valueOfHavingSelection
+		      )
+		       #(#MenuItem
+			  #label: '-'
+		      )
+		       #(#MenuItem
+			  #label: 'All'
+			  #translateLabel: true
+			  #value: #doDeleteAll
+			  #activeHelpKey: #deleteAll
+			  #enabled: #valueOfNotReading
+		      )
+		       #(#MenuItem
+			  #label: 'To End'
+			  #translateLabel: true
+			  #value: #doDeleteToEnd
+			  #activeHelpKey: #deleteToEnd
+			  #enabled: #valueOfHavingSelection
+		      )
+		       #(#MenuItem
+			  #label: 'All for Class'
+			  #translateLabel: true
+			  #value: #doDeleteAllForClass
+			  #activeHelpKey: #applyForClassToEnd
+			  #enabled: #valueOfHavingChangeSelection
+		      )
+		       #(#MenuItem
+			  #label: 'For Class to End'
+			  #translateLabel: true
+			  #value: #doDeleteForClassToEnd
+			  #activeHelpKey: #deleteForClassToEnd
+			  #enabled: #valueOfHavingChangeSelection
+		      )
+		       #(#MenuItem
+			  #label: '-'
+		      )
+		       #(#MenuItem
+			  #label: 'Compress'
+			  #translateLabel: true
+			  #value: #doCompress
+			  #activeHelpKey: #deleteCompress
+			  #enabled: #valueOfNotReading
+		      )
+		       #(#MenuItem
+			  #label: 'Compress for Class'
+			  #translateLabel: true
+			  #value: #doCompressForClass
+			  #activeHelpKey: #deleteCompressForClass
+			  #enabled: #valueOfHavingChangeSelection
+		      )
+		    ) nil
+		    nil
+		)
+	    )
+	     #(#MenuItem
+		#label: 'Test'
+		#translateLabel: true
+		#activeHelpKey: #test
+		#submenu: 
+		 #(#Menu
                     
-                     #(
-                       #(#MenuItem
-                          #label: 'Find last Snapshot'
-                          #translateLabel: true
-                          #value: #doFindSnapshot:
-                          #activeHelpKey: #testFindLastSnapshot
-                          #enabled: #valueOfHavingSelection
-                          #argument: 'last'
-                      )
-                       #(#MenuItem
-                          #label: 'Find next Snapshot'
-                          #translateLabel: true
-                          #value: #doFindSnapshot:
-                          #activeHelpKey: #testFindNextSnapshot
-                          #enabled: #valueOfHavingSelection
-                          #argument: 'next'
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Compare with Current Version'
-                          #translateLabel: true
-                          #value: #doCompare
-                          #activeHelpKey: #testCompareWithCurrentVersion
-                          #enabled: #valueOfHavingChangeSelection
-                      )
-                    ) nil
-                    nil
-                )
-            )
-             #(#MenuItem
-                #label: 'Settings'
-                #translateLabel: true
-                #activeHelpKey: #settings
-                #submenu: 
-                 #(#Menu
+		     #(
+		       #(#MenuItem
+			  #label: 'Find last Snapshot'
+			  #translateLabel: true
+			  #value: #doFindSnapshot:
+			  #activeHelpKey: #testFindLastSnapshot
+			  #enabled: #valueOfHavingSelection
+			  #argument: 'last'
+		      )
+		       #(#MenuItem
+			  #label: 'Find next Snapshot'
+			  #translateLabel: true
+			  #value: #doFindSnapshot:
+			  #activeHelpKey: #testFindNextSnapshot
+			  #enabled: #valueOfHavingSelection
+			  #argument: 'next'
+		      )
+		       #(#MenuItem
+			  #label: '-'
+		      )
+		       #(#MenuItem
+			  #label: 'Compare with Current Version'
+			  #translateLabel: true
+			  #value: #doCompare
+			  #activeHelpKey: #testCompareWithCurrentVersion
+			  #enabled: #valueOfHavingChangeSelection
+		      )
+		    ) nil
+		    nil
+		)
+	    )
+	     #(#MenuItem
+		#label: 'Settings'
+		#translateLabel: true
+		#activeHelpKey: #settings
+		#submenu: 
+		 #(#Menu
                     
-                     #(
-                       #(#MenuItem
-                          #label: 'Auto Update'
-                          #translateLabel: true
-                          #activeHelpKey: #settingsAutoUpdate
-                          #enabled: #valueOfNotReading
-                          #indication: #autoUpdateMode:
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Private Classes as Separate'
-                          #translateLabel: true
-                          #activeHelpKey: #settingsPrivateAsSeparate
-                          #enabled: #valueOfNotReading
-                          #indication: #privateAsSeparate:
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Columns'
-                          #translateLabel: true
-                          #activeHelpKey: #settingsColumns
-                          #submenu: 
-                           #(#Menu
+		     #(
+		       #(#MenuItem
+			  #label: 'Auto Update'
+			  #translateLabel: true
+			  #activeHelpKey: #settingsAutoUpdate
+			  #enabled: #valueOfNotReading
+			  #indication: #autoUpdateMode:
+		      )
+		       #(#MenuItem
+			  #label: '-'
+		      )
+		       #(#MenuItem
+			  #label: 'Private Classes as Separate'
+			  #translateLabel: true
+			  #activeHelpKey: #settingsPrivateAsSeparate
+			  #enabled: #valueOfNotReading
+			  #indication: #privateAsSeparate:
+		      )
+		       #(#MenuItem
+			  #label: '-'
+		      )
+		       #(#MenuItem
+			  #label: 'Columns'
+			  #translateLabel: true
+			  #activeHelpKey: #settingsColumns
+			  #submenu: 
+			   #(#Menu
                               
-                               #(
-                                 #(#MenuItem
-                                    #label: 'Category'
-                                    #activeHelpKey: #settingsColumnsCategory
-                                    #indication: #categoryColumn:
-                                )
-                                 #(#MenuItem
-                                    #label: 'Delta Info'
-                                    #activeHelpKey: #settingsColumnsDeltaInfo
-                                    #indication: #deltaInfoColumn:
-                                )
-                                 #(#MenuItem
-                                    #label: 'Type'
-                                    #activeHelpKey: #settingsColumnsType
-                                    #indication: #typeColumn:
-                                )
-                                 #(#MenuItem
-                                    #label: 'Time Stamp'
-                                    #activeHelpKey: #settingsColumnsTimeStamp
-                                    #indication: #timeStampColumn:
-                                )
-                                 #(#MenuItem
-                                    #label: 'Positions'
-                                    #activeHelpKey: #settingsColumnsPosition
-                                    #indication: #positionsColumn:
-                                )
-                              ) nil
-                              nil
-                          )
-                      )
-                       #(#MenuItem
-                          #label: '-'
-                      )
-                       #(#MenuItem
-                          #label: 'Fonts'
-                          #translateLabel: true
-                          #enabled: #valueOfNotReading
-                          #submenuChannel: #menuFont
-                      )
-                    ) nil
-                    nil
-                )
-            )
-             #(#MenuItem
-                #label: 'History'
-                #translateLabel: true
-                #submenuChannel: #menuHistory
-            )
-             #(#MenuItem
-                #label: 'Help'
-                #translateLabel: true
-                #startGroup: #right
-                #activeHelpKey: #help
-                #submenuChannel: #menuHelp
-            )
-          ) nil
-          nil
+			       #(
+				 #(#MenuItem
+				    #label: 'Category'
+				    #activeHelpKey: #settingsColumnsCategory
+				    #indication: #categoryColumn:
+				)
+				 #(#MenuItem
+				    #label: 'Delta Info'
+				    #activeHelpKey: #settingsColumnsDeltaInfo
+				    #indication: #deltaInfoColumn:
+				)
+				 #(#MenuItem
+				    #label: 'Type'
+				    #activeHelpKey: #settingsColumnsType
+				    #indication: #typeColumn:
+				)
+				 #(#MenuItem
+				    #label: 'Time Stamp'
+				    #activeHelpKey: #settingsColumnsTimeStamp
+				    #indication: #timeStampColumn:
+				)
+				 #(#MenuItem
+				    #label: 'Positions'
+				    #activeHelpKey: #settingsColumnsPosition
+				    #indication: #positionsColumn:
+				)
+			      ) nil
+			      nil
+			  )
+		      )
+		       #(#MenuItem
+			  #label: '-'
+		      )
+		       #(#MenuItem
+			  #label: 'Fonts'
+			  #translateLabel: true
+			  #enabled: #valueOfNotReading
+			  #submenuChannel: #menuFont
+		      )
+		    ) nil
+		    nil
+		)
+	    )
+	     #(#MenuItem
+		#label: 'History'
+		#translateLabel: true
+		#submenuChannel: #menuHistory
+	    )
+	     #(#MenuItem
+		#label: 'Help'
+		#translateLabel: true
+		#startGroup: #right
+		#activeHelpKey: #help
+		#submenuChannel: #menuHelp
+	    )
+	  ) nil
+	  nil
       )
 
     "Modified: / 19.5.1998 / 18:17:27 / cg"
@@ -968,88 +967,88 @@
      
        #(#Menu
           
-           #(
-             #(#MenuItem
-                #label: 'Apply'
-                #translateLabel: true
-                #value: #doApply
-                #activeHelpKey: #applyLine
-                #enabled: #valueOfHavingChangeSelection
-            )
-             #(#MenuItem
-                #label: 'Apply To End'
-                #translateLabel: true
-                #value: #doApplyToEnd
-                #activeHelpKey: #applyToEnd
-                #enabled: #valueOfHavingSelection
-            )
-             #(#MenuItem
-                #label: 'Apply All For Class'
-                #translateLabel: true
-                #value: #doApplyAllForClass
-                #activeHelpKey: #applyForClassToEnd
-                #enabled: #valueOfHavingChangeSelection
-            )
-             #(#MenuItem
-                #label: 'Apply For Class To End'
-                #translateLabel: true
-                #value: #doApplyForClassToEnd
-                #activeHelpKey: #applyForClassToEnd
-                #enabled: #valueOfHavingChangeSelection
-            )
-             #(#MenuItem
-                #label: '-'
-            )
-             #(#MenuItem
-                #label: 'Delete'
-                #translateLabel: true
-                #value: #doDelete
-                #activeHelpKey: #deleteLine
-                #enabled: #valueOfHavingSelection
-            )
-             #(#MenuItem
-                #label: 'Delete To End'
-                #translateLabel: true
-                #value: #doDeleteToEnd
-                #activeHelpKey: #deleteToEnd
-                #enabled: #valueOfHavingSelection
-            )
-             #(#MenuItem
-                #label: 'Delete All For Class'
-                #translateLabel: true
-                #value: #doDeleteAllForClass
-                #activeHelpKey: #applyForClassToEnd
-                #enabled: #valueOfHavingChangeSelection
-            )
-             #(#MenuItem
-                #label: 'Delete For Class To End'
-                #translateLabel: true
-                #value: #doDeleteForClassToEnd
-                #activeHelpKey: #deleteForClassToEnd
-                #enabled: #valueOfHavingChangeSelection
-            )
-             #(#MenuItem
-                #label: '-'
-            )
-             #(#MenuItem
-                #label: 'Browse Class'
-                #translateLabel: true
-                #value: #doBrowseClass
-                #activeHelpKey: #fileBrowseClass
-                #enabled: #valueOfHavingChangeSelection
-            )
-             #(#MenuItem
-                #label: '-'
-            )
-             #(#MenuItem
-                #label: 'Compress For Class'
-                #translateLabel: true
-                #value: #doCompressForClass
-                #activeHelpKey: #deleteCompressForClass
-                #enabled: #valueOfHavingChangeSelection
-            )
-          ) nil
-          nil
+	   #(
+	     #(#MenuItem
+		#label: 'Apply'
+		#translateLabel: true
+		#value: #doApply
+		#activeHelpKey: #applyLine
+		#enabled: #valueOfHavingChangeSelection
+	    )
+	     #(#MenuItem
+		#label: 'Apply To End'
+		#translateLabel: true
+		#value: #doApplyToEnd
+		#activeHelpKey: #applyToEnd
+		#enabled: #valueOfHavingSelection
+	    )
+	     #(#MenuItem
+		#label: 'Apply All For Class'
+		#translateLabel: true
+		#value: #doApplyAllForClass
+		#activeHelpKey: #applyForClassToEnd
+		#enabled: #valueOfHavingChangeSelection
+	    )
+	     #(#MenuItem
+		#label: 'Apply For Class To End'
+		#translateLabel: true
+		#value: #doApplyForClassToEnd
+		#activeHelpKey: #applyForClassToEnd
+		#enabled: #valueOfHavingChangeSelection
+	    )
+	     #(#MenuItem
+		#label: '-'
+	    )
+	     #(#MenuItem
+		#label: 'Delete'
+		#translateLabel: true
+		#value: #doDelete
+		#activeHelpKey: #deleteLine
+		#enabled: #valueOfHavingSelection
+	    )
+	     #(#MenuItem
+		#label: 'Delete To End'
+		#translateLabel: true
+		#value: #doDeleteToEnd
+		#activeHelpKey: #deleteToEnd
+		#enabled: #valueOfHavingSelection
+	    )
+	     #(#MenuItem
+		#label: 'Delete All For Class'
+		#translateLabel: true
+		#value: #doDeleteAllForClass
+		#activeHelpKey: #applyForClassToEnd
+		#enabled: #valueOfHavingChangeSelection
+	    )
+	     #(#MenuItem
+		#label: 'Delete For Class To End'
+		#translateLabel: true
+		#value: #doDeleteForClassToEnd
+		#activeHelpKey: #deleteForClassToEnd
+		#enabled: #valueOfHavingChangeSelection
+	    )
+	     #(#MenuItem
+		#label: '-'
+	    )
+	     #(#MenuItem
+		#label: 'Browse Class'
+		#translateLabel: true
+		#value: #doBrowseClass
+		#activeHelpKey: #fileBrowseClass
+		#enabled: #valueOfHavingChangeSelection
+	    )
+	     #(#MenuItem
+		#label: '-'
+	    )
+	     #(#MenuItem
+		#label: 'Compress For Class'
+		#translateLabel: true
+		#value: #doCompressForClass
+		#activeHelpKey: #deleteCompressForClass
+		#enabled: #valueOfHavingChangeSelection
+	    )
+	  ) nil
+	  nil
       )
 
     "Modified: / 19.5.1998 / 18:03:59 / cg"
@@ -1073,103 +1072,103 @@
      
        #(#Menu
           
-           #(
-             #(#MenuItem
-                #label: 'Load'
-                #isButton: true
-                #value: #doLoad
-                #activeHelpKey: #fileLoad
-                #enabled: #valueOfNotReading
-                #labelImage: #(#ResourceRetriever #Icon #loadIcon)
-            )
-             #(#MenuItem
-                #label: 'Save'
-                #isButton: true
-                #value: #doSave
-                #activeHelpKey: #fileSave
-                #enabled: #valueOfNotSaving
-                #labelImage: #(#ResourceRetriever #Icon #saveIcon)
-            )
-             #(#MenuItem
-                #label: ''
-            )
-             #(#MenuItem
-                #label: 'Compress'
-                #isButton: true
-                #value: #doCompress
-                #activeHelpKey: #deleteCompress
-                #enabled: #valueOfNotReading
-                #labelImage: #(#ResourceRetriever nil #compressIcon)
-            )
-             #(#MenuItem
-                #label: ''
-            )
-             #(#MenuItem
-                #label: 'Apply'
-                #isButton: true
-                #value: #doApply
-                #activeHelpKey: #applyLine
-                #enabled: #valueOfHavingChangeSelection
-                #labelImage: #(#ResourceRetriever nil #applyIcon)
-            )
-             #(#MenuItem
-                #label: 'Apply To End'
-                #isButton: true
-                #value: #doApplyToEnd
-                #activeHelpKey: #applyToEnd
-                #enabled: #valueOfHavingSelection
-                #labelImage: #(#ResourceRetriever nil #applyToEndIcon)
-            )
-             #(#MenuItem
-                #label: 'Apply From Last Snapshot'
-                #isButton: true
-                #value: #doApplyFromLastSnapshot
-                #activeHelpKey: #applyFromLastSnapshot
-                #enabled: #valueOfNotReading
-                #labelImage: #(#ResourceRetriever nil #applyFromLastSnapshotIcon)
-            )
-             #(#MenuItem
-                #label: ''
-            )
-             #(#MenuItem
-                #label: 'Delete'
-                #isButton: true
-                #value: #doDelete
-                #activeHelpKey: #deleteLine
-                #enabled: #valueOfHavingSelection
-                #labelImage: #(#ResourceRetriever nil #deleteIcon)
-            )
-             #(#MenuItem
-                #label: 'Delete To End'
-                #isButton: true
-                #value: #doDeleteToEnd
-                #activeHelpKey: #deleteToEnd
-                #enabled: #valueOfHavingSelection
-                #labelImage: #(#ResourceRetriever nil #deleteToEndIcon)
-            )
-             #(#MenuItem
-                #label: ''
-            )
-             #(#MenuItem
-                #label: 'Find Last Snapshot'
-                #isButton: true
-                #value: #doFindSnapshot:
-                #activeHelpKey: #testFindLastSnapshot
-                #enabled: #valueOfHavingSelection
-                #argument: 'last'
-                #labelImage: #(#ResourceRetriever nil #findLastSnapshotIcon)
-            )
-             #(#MenuItem
-                #label: 'Find Next Snapshot'
-                #isButton: true
-                #value: #doFindSnapshot:
-                #activeHelpKey: #testFindNextSnapshot
-                #enabled: #valueOfHavingSelection
-                #argument: 'next'
-                #labelImage: #(#ResourceRetriever nil #findNextSnapshotIcon)
-            )
-          ) nil
-          nil
+	   #(
+	     #(#MenuItem
+		#label: 'Load'
+		#isButton: true
+		#value: #doLoad
+		#activeHelpKey: #fileLoad
+		#enabled: #valueOfNotReading
+		#labelImage: #(#ResourceRetriever #Icon #loadIcon)
+	    )
+	     #(#MenuItem
+		#label: 'Save'
+		#isButton: true
+		#value: #doSave
+		#activeHelpKey: #fileSave
+		#enabled: #valueOfNotSaving
+		#labelImage: #(#ResourceRetriever #Icon #saveIcon)
+	    )
+	     #(#MenuItem
+		#label: ''
+	    )
+	     #(#MenuItem
+		#label: 'Compress'
+		#isButton: true
+		#value: #doCompress
+		#activeHelpKey: #deleteCompress
+		#enabled: #valueOfNotReading
+		#labelImage: #(#ResourceRetriever nil #compressIcon)
+	    )
+	     #(#MenuItem
+		#label: ''
+	    )
+	     #(#MenuItem
+		#label: 'Apply'
+		#isButton: true
+		#value: #doApply
+		#activeHelpKey: #applyLine
+		#enabled: #valueOfHavingChangeSelection
+		#labelImage: #(#ResourceRetriever nil #applyIcon)
+	    )
+	     #(#MenuItem
+		#label: 'Apply To End'
+		#isButton: true
+		#value: #doApplyToEnd
+		#activeHelpKey: #applyToEnd
+		#enabled: #valueOfHavingSelection
+		#labelImage: #(#ResourceRetriever nil #applyToEndIcon)
+	    )
+	     #(#MenuItem
+		#label: 'Apply From Last Snapshot'
+		#isButton: true
+		#value: #doApplyFromLastSnapshot
+		#activeHelpKey: #applyFromLastSnapshot
+		#enabled: #valueOfNotReading
+		#labelImage: #(#ResourceRetriever nil #applyFromLastSnapshotIcon)
+	    )
+	     #(#MenuItem
+		#label: ''
+	    )
+	     #(#MenuItem
+		#label: 'Delete'
+		#isButton: true
+		#value: #doDelete
+		#activeHelpKey: #deleteLine
+		#enabled: #valueOfHavingSelection
+		#labelImage: #(#ResourceRetriever nil #deleteIcon)
+	    )
+	     #(#MenuItem
+		#label: 'Delete To End'
+		#isButton: true
+		#value: #doDeleteToEnd
+		#activeHelpKey: #deleteToEnd
+		#enabled: #valueOfHavingSelection
+		#labelImage: #(#ResourceRetriever nil #deleteToEndIcon)
+	    )
+	     #(#MenuItem
+		#label: ''
+	    )
+	     #(#MenuItem
+		#label: 'Find Last Snapshot'
+		#isButton: true
+		#value: #doFindSnapshot:
+		#activeHelpKey: #testFindLastSnapshot
+		#enabled: #valueOfHavingSelection
+		#argument: 'last'
+		#labelImage: #(#ResourceRetriever nil #findLastSnapshotIcon)
+	    )
+	     #(#MenuItem
+		#label: 'Find Next Snapshot'
+		#isButton: true
+		#value: #doFindSnapshot:
+		#activeHelpKey: #testFindNextSnapshot
+		#enabled: #valueOfHavingSelection
+		#argument: 'next'
+		#labelImage: #(#ResourceRetriever nil #findNextSnapshotIcon)
+	    )
+	  ) nil
+	  nil
       )
 ! !
 
@@ -1291,14 +1290,14 @@
 
     |holder|
     (holder := builder bindingAt:#listOfChangeColumns) isNil ifTrue:[
-        builder aspectAt:#listOfChangeColumns put:(holder := List new).
-        self changeColumn: nil add: true.
-        self changeColumn: #change add: true.
-        self categoryColumn: self categoryColumn.
-        self timeStampColumn: self timeStampColumn.
-        self typeColumn: self typeColumn.
-        self deltaInfoColumn: self deltaInfoColumn.
-        self positionsColumn: self positionsColumn.
+	builder aspectAt:#listOfChangeColumns put:(holder := List new).
+	self changeColumn: nil add: true.
+	self changeColumn: #change add: true.
+	self categoryColumn: self categoryColumn.
+	self timeStampColumn: self timeStampColumn.
+	self typeColumn: self typeColumn.
+	self deltaInfoColumn: self deltaInfoColumn.
+	self positionsColumn: self positionsColumn.
     ].
     ^ holder
 
@@ -1310,7 +1309,7 @@
 
     |holder| 
     (holder := builder bindingAt:#listOfChanges) isNil ifTrue:[
-        builder aspectAt:#listOfChanges put:(holder := List new)
+	builder aspectAt:#listOfChanges put:(holder := List new)
     ].   
     ^ holder
 !
@@ -1320,7 +1319,7 @@
 
     |holder|
     (holder := builder bindingAt:#selectionOfChange) isNil ifTrue:[
-        builder aspectAt:#selectionOfChange put:(holder :=  ValueHolder new).
+	builder aspectAt:#selectionOfChange put:(holder :=  ValueHolder new).
     ].                                           
     ^ holder
 !
@@ -1330,7 +1329,7 @@
 
     |holder|
     (holder := builder bindingAt:#valueOfChangeText) isNil ifTrue:[
-        builder aspectAt:#valueOfChangeText put:(holder :=  ValueHolder new).
+	builder aspectAt:#valueOfChangeText put:(holder :=  ValueHolder new).
     ].
     ^ holder
 !
@@ -1340,8 +1339,8 @@
 
     |holder|
     (holder := builder bindingAt:#valueOfFilter) isNil ifTrue:[
-        builder aspectAt:#valueOfFilter put:(holder :=  ValueHolder new).
-        holder addDependent: self
+	builder aspectAt:#valueOfFilter put:(holder :=  ValueHolder new).
+	holder addDependent: self
     ].
     ^ holder
 !
@@ -1351,7 +1350,7 @@
 
     |holder|
     (holder := builder bindingAt:#valueOfHavingChangeSelection) isNil ifTrue:[
-        builder aspectAt:#valueOfHavingChangeSelection put:(holder :=  false asValue).
+	builder aspectAt:#valueOfHavingChangeSelection put:(holder :=  false asValue).
     ].
     ^ holder
 !
@@ -1361,7 +1360,7 @@
 
     |holder|
     (holder := builder bindingAt:#valueOfHavingSelection) isNil ifTrue:[
-        builder aspectAt:#valueOfHavingSelection put:(holder :=  false asValue).
+	builder aspectAt:#valueOfHavingSelection put:(holder :=  false asValue).
     ].
     ^ holder
 !
@@ -1371,7 +1370,7 @@
 
     |holder|
     (holder := builder bindingAt:#valueOfReading) isNil ifTrue:[
-        builder aspectAt:#valueOfReading put:(holder :=  true asValue).
+	builder aspectAt:#valueOfReading put:(holder :=  true asValue).
     ].
     ^ holder
 !
@@ -1381,7 +1380,7 @@
 
     |holder|
     (holder := builder bindingAt:#valueOfNotSaving) isNil ifTrue:[
-        builder aspectAt:#valueOfNotSaving put:(holder :=  true asValue).
+	builder aspectAt:#valueOfNotSaving put:(holder :=  true asValue).
     ].
     ^ holder
 !
@@ -1391,7 +1390,7 @@
 
     |holder|
     (holder := builder bindingAt:#valueOfReadProgress) isNil ifTrue:[
-        builder aspectAt:#valueOfReadProgress put:(holder :=  ValueHolder with: 0).
+	builder aspectAt:#valueOfReadProgress put:(holder :=  ValueHolder with: 0).
     ].
     ^ holder
 ! !
@@ -1410,7 +1409,7 @@
     sawExcla := aStream peekFor:(aStream class chunkSeparator).
     chunk := aStream nextChunk.
     sawExcla ifTrue:[
-        chunk := aStream nextChunk
+	chunk := aStream nextChunk
     ].
     aStream close.        
     self valueOfChangeText value:chunk.
@@ -1428,8 +1427,8 @@
     changedObject == self valueOfFilter 
     ifTrue: 
     [                           
-        filterCompletionBlock value: changedObject value. 
-        self listOfChanges size > 0 ifTrue: [self addToHistory: changedObject value -> #doFilter:] 
+	filterCompletionBlock value: changedObject value. 
+	self listOfChanges size > 0 ifTrue: [self addToHistory: changedObject value -> #doFilter:] 
     ]
 
 
@@ -1446,14 +1445,14 @@
     (change := self selectionOfChange value) notNil
     ifTrue:
     [
-        self valueOfHavingSelection value: true.
-        self valueOfHavingChangeSelection value: 
-            ((change type = 'method') or: [(change type = 'class')])
+	self valueOfHavingSelection value: true.
+	self valueOfHavingChangeSelection value: 
+	    ((change type = 'method') or: [(change type = 'class')])
     ]
     ifFalse:
     [
-        self valueOfHavingSelection value: false.
-        self valueOfHavingChangeSelection value: false
+	self valueOfHavingSelection value: false.
+	self valueOfHavingChangeSelection value: false
     ]
 
 
@@ -1495,30 +1494,30 @@
 
     (skipSignal notNil) ifTrue:[
 
-        self changeTextEditor highlightingErrorPosition:relPos to:relEndPos do:[
-            |box|
-
-            "
-             start dialog - make certain cleanup is done
-            "
-            action := OptionBox 
-                          request:aString
-                          label:'Error'
-                          form:(WarningBox iconBitmap)
-                          buttonLabels:#('cancel' 'skip' 'continue')
-                          values:#(#abort #skip #continue)
-                          default:#continue.
-        ].
-
-        action == #abort ifTrue:[
-            Object abortSignal raise.
-            ^ false
-        ].
-        action == #skip ifTrue:[
-            skipSignal raise.
-            ^ false
-        ].
-        ^  false 
+	self changeTextEditor highlightingErrorPosition:relPos to:relEndPos do:[
+	    |box|
+
+	    "
+	     start dialog - make certain cleanup is done
+	    "
+	    action := OptionBox 
+			  request:aString
+			  label:'Error'
+			  form:(WarningBox iconBitmap)
+			  buttonLabels:#('cancel' 'skip' 'continue')
+			  values:#(#abort #skip #continue)
+			  default:#continue.
+	].
+
+	action == #abort ifTrue:[
+	    Object abortSignal raise.
+	    ^ false
+	].
+	action == #skip ifTrue:[
+	    skipSignal raise.
+	    ^ false
+	].
+	^  false 
     ].
     ^self changeTextEditor error:aString position:relPos to:relEndPos from:aCompiler
 
@@ -1600,56 +1599,56 @@
 
     nm := self classNameOfChange:aChange.
     nm notNil ifTrue:[
-        |cls|
-
-        cls := Smalltalk at:(nm asSymbol) ifAbsent:[].
-        cls notNil ifTrue:[
-            cls isLoaded ifFalse:[
-                cls autoload
-            ]
-        ]
+	|cls|
+
+	cls := Smalltalk at:(nm asSymbol) ifAbsent:[].
+	cls notNil ifTrue:[
+	    cls isLoaded ifFalse:[
+		cls autoload
+	    ]
+	]
     ].
 
     applyAction := [
-        |sig|
-
-        (skipSignal notNil) ifTrue:[
-            sig := skipSignal
-        ] ifFalse:[
-            sig := Object abortSignal
-        ].
-        sig catch:[
-            |reader doItChunk methodsForChunk|
-
-            "/ a followup methodsFor: chunk...
-            aChange followUp ifTrue:[
-                methodsForChunk := aChange chunk.
-            ] ifFalse:[
-                doItChunk := aStream nextChunk.   "/ an empty chunk sometimes...
-                doItChunk notEmpty ifTrue:[
-                    Compiler evaluate:doItChunk notifying:self.
-                ] ifFalse:[
-                    methodsForChunk := aStream nextChunk.   "/ the real one
-                ]
-            ].
-            methodsForChunk notNil ifTrue:[
-                Class methodRedefinitionSignal handle:[:ex |
-                    ex proceedWith:#keep
-                ] do:[
-                    reader := Compiler evaluate:methodsForChunk notifying:self.
-                    reader fileInFrom:aStream notifying:self passChunk:false single:true.
-                ]
-            ]
-        ].
+	|sig|
+
+	(skipSignal notNil) ifTrue:[
+	    sig := skipSignal
+	] ifFalse:[
+	    sig := Object abortSignal
+	].
+	sig catch:[
+	    |reader doItChunk methodsForChunk|
+
+	    "/ a followup methodsFor: chunk...
+	    aChange followUp ifTrue:[
+		methodsForChunk := aChange chunk.
+	    ] ifFalse:[
+		doItChunk := aStream nextChunk.   "/ an empty chunk sometimes...
+		doItChunk notEmpty ifTrue:[
+		    Compiler evaluate:doItChunk notifying:self.
+		] ifFalse:[
+		    methodsForChunk := aStream nextChunk.   "/ the real one
+		]
+	    ].
+	    methodsForChunk notNil ifTrue:[
+		Class methodRedefinitionSignal handle:[:ex |
+		    ex proceedWith:#keep
+		] do:[
+		    reader := Compiler evaluate:methodsForChunk notifying:self.
+		    reader fileInFrom:aStream notifying:self passChunk:false single:true.
+		]
+	    ]
+	].
     ].
 
     "/
     "/ if I am showing the changes file, dont update it
     "/
     changeFileName asFilename pathName = ObjectMemory nameForChanges asFilename pathName ifTrue:[
-        Class withoutUpdatingChangesDo:applyAction
+	Class withoutUpdatingChangesDo:applyAction
     ] ifFalse:[
-        applyAction value
+	applyAction value
     ].
     aStream close
 
@@ -1660,12 +1659,12 @@
     "selects aChange"
 
     self class autoSelectNext ifTrue:[         
-        ((self listOfChanges indexOf: aChange) <= self listOfChanges size) ifTrue:[
-            self selectionOfChange value: aChange.  
-            self changeSelected:(self listOfChanges indexOf: aChange).
-            self updateChannels.
-            ^ self
-        ]
+	((self listOfChanges indexOf: aChange) <= self listOfChanges size) ifTrue:[
+	    self selectionOfChange value: aChange.  
+	    self changeSelected:(self listOfChanges indexOf: aChange).
+	    self updateChannels.
+	    ^ self
+	]
     ].         
     self updateChannels.
     self unselectChange
@@ -1687,10 +1686,10 @@
 
     last := self listOfChanges size.
     aChange notNil ifTrue:[  
-        self autoSelectChange:aChange
+	self autoSelectChange:aChange
     ] ifFalse:[
-        self selectionOfChange value: (self listOfChanges at: last ifAbsent: nil).
-        self changeSelected: last
+	self selectionOfChange value: (self listOfChanges at: last ifAbsent: nil).
+	self changeSelected: last
     ].
     self updateChannels
 !
@@ -1704,15 +1703,15 @@
     addOrRemove
     ifTrue:
     [    
-        newListOfChangeColumns add: 
-            ((self class tableColumnsForChangeAttributes 
-                collect: [:i| i decodeAsLiteralArray]) 
-                    detect: [:column| column id = aColumnId])
+	newListOfChangeColumns add: 
+	    ((self class tableColumnsForChangeAttributes 
+		collect: [:i| i decodeAsLiteralArray]) 
+		    detect: [:column| column id = aColumnId])
     ]
     ifFalse:
     [
-        newListOfChangeColumns remove: 
-            (self listOfChangeColumns detect: [:column| column id = aColumnId] ifNone: nil) ifAbsent: nil
+	newListOfChangeColumns remove: 
+	    (self listOfChangeColumns detect: [:column| column id = aColumnId] ifNone: nil) ifAbsent: nil
     ].
     self listOfChangeColumns contents: newListOfChangeColumns.
     self autoSelectLast
@@ -1734,15 +1733,15 @@
 
     |cls|
     aClass isMeta ifTrue:[
-        cls := aClass soleInstance
+	cls := aClass soleInstance
     ] ifFalse:[
-        cls := aClass
+	cls := aClass
     ].
     cls isLoaded ifFalse:[
-        (self confirm:(cls name , ' is an autoloaded class.\I can only compare the methods texts if its loaded first.\\Load the class first ?') withCRs)
-        ifTrue:[
-            cls autoload
-        ]
+	(self confirm:(cls name , ' is an autoloaded class.\I can only compare the methods texts if its loaded first.\\Load the class first ?') withCRs)
+	ifTrue:[
+	    cls autoload
+	]
     ].
     ^ cls isLoaded
 !
@@ -1755,16 +1754,16 @@
     Processor removeTimedBlock:autoUpdateBlock.   
     f := changeFileName asFilename.
     (info := f info) isNil ifTrue:[
-        self newLabel:'unaccessable'
+	self newLabel:'unaccessable'
     ] ifFalse:[
-        (info modified) > changeFileTimestamp ifTrue:[
-            self newLabel:'outdated'.
-            AutoUpdate ifTrue:[
-                self doReload
-            ]
-        ] ifFalse:[
-            self newLabel:''
-        ]
+	(info modified) > changeFileTimestamp ifTrue:[
+	    self newLabel:'outdated'.
+	    AutoUpdate ifTrue:[
+		self doReload
+	    ]
+	] ifFalse:[
+	    self newLabel:''
+	]
     ].
     Processor addTimedBlock:autoUpdateBlock afterSeconds:5.
 !
@@ -1778,7 +1777,7 @@
     name := self fullClassNameOfChange:aChange.
     name isNil ifTrue:[^ nil].
     (name endsWith:' class') ifTrue:[
-        ^ name copyWithoutLast:6
+	^ name copyWithoutLast:6
     ].
     ^ name
 !
@@ -1796,146 +1795,146 @@
     showDiff := false.
 
     aChange followUp ifFalse:[
-        sawExcla := aStream peekFor:(aStream class chunkSeparator).
-        chunk := aStream nextChunk.
+	sawExcla := aStream peekFor:(aStream class chunkSeparator).
+	chunk := aStream nextChunk.
     ] ifTrue:[
-        chunk := aChange chunk.
-        sawExcla := true.
+	chunk := aChange chunk.
+	sawExcla := true.
     ].
 
     beep := false.
     sawExcla ifFalse:[
-        outcome := 'Cannot compare this change\(i.e. this is not a method change)!!'.
-
-        parseTree := Parser parseExpression:chunk.
-        (parseTree notNil and:[parseTree isMessage]) ifTrue:[
-            ((selector := parseTree selector) == #removeSelector:) ifTrue:[
-                thisClass := (parseTree receiver evaluate).
-                thisClass isBehavior ifTrue:[
-                    (self checkClassIsLoaded:thisClass) ifTrue:[
-                        selector := (parseTree arg1 evaluate).
-                        (thisClass includesSelector:selector) ifTrue:[
-                            outcome := 'Change removes the #' , selector , ' method from ' , thisClass name.
-                        ] ifFalse:[
-                            outcome := 'Change has no effect\(there is no method for #' , selector , ' in ' , thisClass name , ')'
-                        ]
-                    ] ifFalse:[
-                        beep := true.
-                        outcome := 'Cannot compare this change (compare requires class to be loaded)!!'.
-                    ]
-                ]
-            ].
-            selector == #category: ifTrue:[
-                parseTree receiver isMessage ifTrue:[
-                    parseTree receiver selector == #compiledMethodAt: ifTrue:[
-                        (method := parseTree receiver evaluate) isMethod ifTrue:[
-                            method category = parseTree arg1 evaluate ifTrue:[
-                                outcome := 'Change has no effect\(same category)'.
-                            ] ifFalse:[
-                                outcome := 'Category is different (''' , method category , ''' vs. ''' , parseTree arg1 evaluate , ''')'
-                            ]
-                        ] ifFalse:[
-                            beep := true.
-                            outcome := 'There is no such method!!'
-                        ]
-                    ]
-                ]
-            ]
-        ]
+	outcome := 'Cannot compare this change\(i.e. this is not a method change)!!'.
+
+	parseTree := Parser parseExpression:chunk.
+	(parseTree notNil and:[parseTree isMessage]) ifTrue:[
+	    ((selector := parseTree selector) == #removeSelector:) ifTrue:[
+		thisClass := (parseTree receiver evaluate).
+		thisClass isBehavior ifTrue:[
+		    (self checkClassIsLoaded:thisClass) ifTrue:[
+			selector := (parseTree arg1 evaluate).
+			(thisClass includesSelector:selector) ifTrue:[
+			    outcome := 'Change removes the #' , selector , ' method from ' , thisClass name.
+			] ifFalse:[
+			    outcome := 'Change has no effect\(there is no method for #' , selector , ' in ' , thisClass name , ')'
+			]
+		    ] ifFalse:[
+			beep := true.
+			outcome := 'Cannot compare this change (compare requires class to be loaded)!!'.
+		    ]
+		]
+	    ].
+	    selector == #category: ifTrue:[
+		parseTree receiver isMessage ifTrue:[
+		    parseTree receiver selector == #compiledMethodAt: ifTrue:[
+			(method := parseTree receiver evaluate) isMethod ifTrue:[
+			    method category = parseTree arg1 evaluate ifTrue:[
+				outcome := 'Change has no effect\(same category)'.
+			    ] ifFalse:[
+				outcome := 'Category is different (''' , method category , ''' vs. ''' , parseTree arg1 evaluate , ''')'
+			    ]
+			] ifFalse:[
+			    beep := true.
+			    outcome := 'There is no such method!!'
+			]
+		    ]
+		]
+	    ]
+	]
     ] ifTrue:[
-        parseTree := Parser parseExpression:chunk.
-        (parseTree notNil 
-         and:[parseTree ~~ #Error
-         and:[parseTree isMessage]]) ifTrue:[
-            (parseTree selector == #methodsFor:) ifTrue:[
-                thisClass := (parseTree receiver evaluate).
-                thisClass isBehavior ifTrue:[
-                    (isLoaded := self checkClassIsLoaded:thisClass) ifFalse:[
-                        outcome := 'Cannot compare this change\(compare requires class to be loaded)!!'.
-                    ].
-
-                    cat := parseTree arg1 evaluate.
-                    newSource := aStream nextChunk.
-
-                    parser := Parser parseMethod:newSource in:thisClass.
-                    (parser notNil and:[parser ~~ #Error]) ifTrue:[
-                        sel := parser selector.
-                        oldMethod := thisClass compiledMethodAt:sel.
-                        oldMethod notNil ifTrue:[
-                            (oldMethod category = cat) ifFalse:[
-                                Transcript showCR:'Category changed.'.
-                            ].
-                            oldSource := oldMethod source.
-                            (oldSource = newSource) ifTrue:[
-                                outcome := 'Same source.'
-                            ] ifFalse:[
-                                oldSource isNil ifTrue:[
-                                    beep := true.
-                                    outcome := 'No source for compare.'
-                                ] ifFalse:[
-                                    "/
-                                    "/ compare for tabulator <-> space changes
-                                    "/ before showing diff...
-                                    "/
-                                    t1 := oldSource asCollectionOfLines collect:[:s | s withTabsExpanded].
-                                    t2 := newSource asCollectionOfLines collect:[:s | s withTabsExpanded].
-                                    t1 = t2 ifTrue:[
-                                        outcome := 'Same source.'
-                                    ] ifFalse:[
-                                        outcome := 'Source changed!!'.
-                                        showDiff := true.
-
-                                        "/
-                                        "/ check if only historyLine diffs
-                                        "/
-                                        (HistoryManager notNil 
-                                        and:[HistoryManager isActive]) ifTrue:[
-                                            (HistoryManager withoutHistoryLines:newSource)
-                                            =
-                                            (HistoryManager withoutHistoryLines:oldSource)
-                                            ifTrue:[
-                                                outcome := 'Same source (history only).'.
-                                                showDiff := false.
-                                            ]
-                                        ].
-                                    ]
-                                ]
-                            ]
-                        ] ifFalse:[
-                            isLoaded ifTrue:[
-                                beep := true.
-                                outcome := 'Method does not exist!!'
-                            ]
-                        ]
-                    ] ifFalse:[
-                        outcome := 'Change unparsable!!'
-                    ].
-                    (showDiff and:[oldSource notNil and:[newSource notNil]]) ifTrue:[
-                        d := DiffTextView 
-                                openOn:oldSource label:'Current version (in image)'
-                                and:newSource label:'Change version'.
-                        d label:'method differences'.
-                    ]
-                ] ifFalse:[
-                    beep := true.
-                    outcome := 'Class does not exist!!'
-                ]
-            ] ifFalse:[
-                beep := true.
-                outcome := 'Not comparable!!'
-            ]
-        ] ifFalse:[
-            beep := true.
-            outcome := 'Not comparable!!'
-        ]
+	parseTree := Parser parseExpression:chunk.
+	(parseTree notNil 
+	 and:[parseTree ~~ #Error
+	 and:[parseTree isMessage]]) ifTrue:[
+	    (parseTree selector == #methodsFor:) ifTrue:[
+		thisClass := (parseTree receiver evaluate).
+		thisClass isBehavior ifTrue:[
+		    (isLoaded := self checkClassIsLoaded:thisClass) ifFalse:[
+			outcome := 'Cannot compare this change\(compare requires class to be loaded)!!'.
+		    ].
+
+		    cat := parseTree arg1 evaluate.
+		    newSource := aStream nextChunk.
+
+		    parser := Parser parseMethod:newSource in:thisClass.
+		    (parser notNil and:[parser ~~ #Error]) ifTrue:[
+			sel := parser selector.
+			oldMethod := thisClass compiledMethodAt:sel.
+			oldMethod notNil ifTrue:[
+			    (oldMethod category = cat) ifFalse:[
+				Transcript showCR:'Category changed.'.
+			    ].
+			    oldSource := oldMethod source.
+			    (oldSource = newSource) ifTrue:[
+				outcome := 'Same source.'
+			    ] ifFalse:[
+				oldSource isNil ifTrue:[
+				    beep := true.
+				    outcome := 'No source for compare.'
+				] ifFalse:[
+				    "/
+				    "/ compare for tabulator <-> space changes
+				    "/ before showing diff...
+				    "/
+				    t1 := oldSource asCollectionOfLines collect:[:s | s withTabsExpanded].
+				    t2 := newSource asCollectionOfLines collect:[:s | s withTabsExpanded].
+				    t1 = t2 ifTrue:[
+					outcome := 'Same source.'
+				    ] ifFalse:[
+					outcome := 'Source changed!!'.
+					showDiff := true.
+
+					"/
+					"/ check if only historyLine diffs
+					"/
+					(HistoryManager notNil 
+					and:[HistoryManager isActive]) ifTrue:[
+					    (HistoryManager withoutHistoryLines:newSource)
+					    =
+					    (HistoryManager withoutHistoryLines:oldSource)
+					    ifTrue:[
+						outcome := 'Same source (history only).'.
+						showDiff := false.
+					    ]
+					].
+				    ]
+				]
+			    ]
+			] ifFalse:[
+			    isLoaded ifTrue:[
+				beep := true.
+				outcome := 'Method does not exist!!'
+			    ]
+			]
+		    ] ifFalse:[
+			outcome := 'Change unparsable!!'
+		    ].
+		    (showDiff and:[oldSource notNil and:[newSource notNil]]) ifTrue:[
+			d := DiffTextView 
+				openOn:oldSource label:'Current version (in image)'
+				and:newSource label:'Change version'.
+			d label:'method differences'.
+		    ]
+		] ifFalse:[
+		    beep := true.
+		    outcome := 'Class does not exist!!'
+		]
+	    ] ifFalse:[
+		beep := true.
+		outcome := 'Not comparable!!'
+	    ]
+	] ifFalse:[
+	    beep := true.
+	    outcome := 'Not comparable!!'
+	]
     ].
     aStream close.
     showDiff ifFalse:[
-        beep ifTrue:[
-            self warn:outcome withCRs.
-        ] ifFalse:[
-            self information:outcome withCRs.
-        ]
+	beep ifTrue:[
+	    self warn:outcome withCRs.
+	] ifFalse:[
+	    self information:outcome withCRs.
+	]
     ]
 !
 
@@ -1952,21 +1951,21 @@
     aStream isNil ifTrue:[^ self].
 
     aClassNameOrNil isNil ifTrue:[
-        self newLabel:'compressing...'.
+	self newLabel:'compressing...'.
     ] ifFalse:[
-        self newLabel:'compressing for ' , aClassNameOrNil.
+	self newLabel:'compressing for ' , aClassNameOrNil.
     ].
 
     CompressSnapshotInfo == true ifTrue:[
-        "
-         get a prototype snapshot record (to be independent of
-         the actual format ..
-        "
-        str := WriteStream on:String new.
-        Class addChangeRecordForSnapshot:'foo' to:str.
-        snapshotProto := str contents.
-        snapshotPrefix := snapshotProto copyTo:10.
-        snapshotNameIndex := snapshotProto findString:'foo'.
+	"
+	 get a prototype snapshot record (to be independent of
+	 the actual format ..
+	"
+	str := WriteStream on:String new.
+	Class addChangeRecordForSnapshot:'foo' to:str.
+	snapshotProto := str contents.
+	snapshotPrefix := snapshotProto copyTo:10.
+	snapshotNameIndex := snapshotProto findString:'foo'.
     ].
 
     self valueOfNotReading value: false.
@@ -1977,140 +1976,140 @@
     self filterLabel label: 'Comp:'; redraw.
 
     self withExecuteCursorDo:[
-        |numChanges classes selectors types excla sawExcla
-         changeNr chunk aParseTree parseTreeChunk
-         thisClass thisSelector codeChunk codeParser
-         compressThis oldValue|
-
-        numChanges := changes size.
-        classes := Array new:numChanges.
-        selectors := Array new:numChanges.
-        types := Array new:numChanges.
-
-        "starting at the end, get the change class and change selector;
-         collect all in classes / selectors"
-
-        changeNr := numChanges.
-        excla := aStream class chunkSeparator.
-
-        [changeNr >= 1] whileTrue:[
-            oldValue := self valueOfReadProgress value.
-                self valueOfReadProgress value: (100 - ((aStream position/aStream size) * 100) rounded).
-                oldValue ~~ self valueOfReadProgress value
-                    ifTrue: [self readProgressIndicator redrawEdges;redraw].
-            aStream position:(changes at: changeNr) position.
-            sawExcla := aStream peekFor:excla.
-            chunk := aStream nextChunk.
-            sawExcla ifTrue:[
-                "optimize a bit if multiple methods for same category arrive"
-                (chunk = parseTreeChunk) ifFalse:[
-                    aParseTree := Parser parseExpression:chunk.
-                    parseTreeChunk := chunk
-                ].
-                (aParseTree notNil 
-                and:[(aParseTree ~~ #Error) 
-                and:[aParseTree isMessage]]) ifTrue:[
-                    (aParseTree selector == #methodsFor:) ifTrue:[
-                        thisClass := (aParseTree receiver evaluate).
-                        codeChunk := aStream nextChunk.
-                        codeParser := Parser 
-                                          parseMethodSpecification:codeChunk
-                                          in:thisClass
-                                          ignoreErrors:true
-                                          ignoreWarnings:true.
-                        (codeParser notNil and:[codeParser ~~ #Error]) ifTrue:[
-                            selectors at:changeNr put:(codeParser selector).
-                            classes at:changeNr put:thisClass.
-                            types at:changeNr put:#methodsFor
-                        ]
-                    ]
-                ]
-            ] ifFalse:[
-                aParseTree := Parser parseExpression:chunk.
-                parseTreeChunk := chunk.
-                (aParseTree notNil 
-                and:[(aParseTree ~~ #Error) 
-                and:[aParseTree isMessage]]) ifTrue:[
-                    (aParseTree selector == #removeSelector:) ifTrue:[
-                        selectors at:changeNr put:(aParseTree arg1 value ).
-                        classes at:changeNr put:(aParseTree receiver evaluate).
-                        types at:changeNr put:#removeSelector
-                    ]
-                ] ifFalse:[
-                    CompressSnapshotInfo == true ifTrue:[
-                        (chunk startsWith:snapshotPrefix) ifTrue:[
-                            str := chunk readStream position:snapshotNameIndex.
-                            fileName := str upTo:(Character space).
-                            "
-                             kludge to allow use of match-check below
-                            "
-                            selectors at:changeNr put:snapshotPrefix.
-                            classes at:changeNr put:fileName.
-                        ]
-                    ]
-                ]
-            ].
-            changeNr := changeNr - 1
-        ].
-        aStream close.
-
-        "for all changes, look for another class/selector occurence later
-         in the list and, if there is one, add change number to the delete set"
-
-        deleteSet := OrderedCollection new.
-        changeNr := 1.
-        [changeNr < changes size] whileTrue:[
-            thisClass := classes at:changeNr.
-
-            compressThis := false.
-            aClassNameOrNil isNil ifTrue:[
-                compressThis := true
-            ] ifFalse:[
-                "/ skipping unloaded/unknown classes
-                thisClass isBehavior ifTrue:[
-                    thisClass isMeta ifTrue:[
-                        compressThis := aClassNameOrNil = thisClass soleInstance name. 
-                    ] ifFalse:[
-                        compressThis := aClassNameOrNil = thisClass name.
-                        (PrivateAsSeparate not and: [thisClass isPrivate])
-                            ifTrue:[compressThis := aClassNameOrNil = thisClass owningClass name]
-                    ]
-                 ]
-            ].
-
-            compressThis ifTrue:[
-                thisSelector := selectors at:changeNr.
-                searchIndex := changeNr.
-                anyMore := true.
-                [anyMore] whileTrue:[
-                    searchIndex := classes indexOf:thisClass
-                                        startingAt:(searchIndex + 1).
-                    (searchIndex ~~ 0) ifTrue:[
-                        ((selectors at:searchIndex) == thisSelector) ifTrue:[
-                            thisClass notNil ifTrue:[
-                                deleteSet add:changeNr.
-                                anyMore := false
-                            ]
-                        ]
-                    ] ifFalse:[
-                        anyMore := false      
-                    ]
-                ].
-            ].
-
-            changeNr := changeNr + 1
-        ].
-
-        "finally delete what has been found"
-
-        (deleteSet size > 0) ifTrue:[
-            index := deleteSet size.
-            [index > 0] whileTrue:[
-                self silentDeleteChange: (changes at: (deleteSet at:index)).
-                index := index - 1
-            ].
-            self setChangeList
-        ].
+	|numChanges classes selectors types excla sawExcla
+	 changeNr chunk aParseTree parseTreeChunk
+	 thisClass thisSelector codeChunk codeParser
+	 compressThis oldValue|
+
+	numChanges := changes size.
+	classes := Array new:numChanges.
+	selectors := Array new:numChanges.
+	types := Array new:numChanges.
+
+	"starting at the end, get the change class and change selector;
+	 collect all in classes / selectors"
+
+	changeNr := numChanges.
+	excla := aStream class chunkSeparator.
+
+	[changeNr >= 1] whileTrue:[
+	    oldValue := self valueOfReadProgress value.
+		self valueOfReadProgress value: (100 - ((aStream position/aStream size) * 100) rounded).
+		oldValue ~~ self valueOfReadProgress value
+		    ifTrue: [self readProgressIndicator redrawEdges;redraw].
+	    aStream position:(changes at: changeNr) position.
+	    sawExcla := aStream peekFor:excla.
+	    chunk := aStream nextChunk.
+	    sawExcla ifTrue:[
+		"optimize a bit if multiple methods for same category arrive"
+		(chunk = parseTreeChunk) ifFalse:[
+		    aParseTree := Parser parseExpression:chunk.
+		    parseTreeChunk := chunk
+		].
+		(aParseTree notNil 
+		and:[(aParseTree ~~ #Error) 
+		and:[aParseTree isMessage]]) ifTrue:[
+		    (aParseTree selector == #methodsFor:) ifTrue:[
+			thisClass := (aParseTree receiver evaluate).
+			codeChunk := aStream nextChunk.
+			codeParser := Parser 
+					  parseMethodSpecification:codeChunk
+					  in:thisClass
+					  ignoreErrors:true
+					  ignoreWarnings:true.
+			(codeParser notNil and:[codeParser ~~ #Error]) ifTrue:[
+			    selectors at:changeNr put:(codeParser selector).
+			    classes at:changeNr put:thisClass.
+			    types at:changeNr put:#methodsFor
+			]
+		    ]
+		]
+	    ] ifFalse:[
+		aParseTree := Parser parseExpression:chunk.
+		parseTreeChunk := chunk.
+		(aParseTree notNil 
+		and:[(aParseTree ~~ #Error) 
+		and:[aParseTree isMessage]]) ifTrue:[
+		    (aParseTree selector == #removeSelector:) ifTrue:[
+			selectors at:changeNr put:(aParseTree arg1 value ).
+			classes at:changeNr put:(aParseTree receiver evaluate).
+			types at:changeNr put:#removeSelector
+		    ]
+		] ifFalse:[
+		    CompressSnapshotInfo == true ifTrue:[
+			(chunk startsWith:snapshotPrefix) ifTrue:[
+			    str := chunk readStream position:snapshotNameIndex.
+			    fileName := str upTo:(Character space).
+			    "
+			     kludge to allow use of match-check below
+			    "
+			    selectors at:changeNr put:snapshotPrefix.
+			    classes at:changeNr put:fileName.
+			]
+		    ]
+		]
+	    ].
+	    changeNr := changeNr - 1
+	].
+	aStream close.
+
+	"for all changes, look for another class/selector occurence later
+	 in the list and, if there is one, add change number to the delete set"
+
+	deleteSet := OrderedCollection new.
+	changeNr := 1.
+	[changeNr < changes size] whileTrue:[
+	    thisClass := classes at:changeNr.
+
+	    compressThis := false.
+	    aClassNameOrNil isNil ifTrue:[
+		compressThis := true
+	    ] ifFalse:[
+		"/ skipping unloaded/unknown classes
+		thisClass isBehavior ifTrue:[
+		    thisClass isMeta ifTrue:[
+			compressThis := aClassNameOrNil = thisClass soleInstance name. 
+		    ] ifFalse:[
+			compressThis := aClassNameOrNil = thisClass name.
+			(PrivateAsSeparate not and: [thisClass isPrivate])
+			    ifTrue:[compressThis := aClassNameOrNil = thisClass owningClass name]
+		    ]
+		 ]
+	    ].
+
+	    compressThis ifTrue:[
+		thisSelector := selectors at:changeNr.
+		searchIndex := changeNr.
+		anyMore := true.
+		[anyMore] whileTrue:[
+		    searchIndex := classes indexOf:thisClass
+					startingAt:(searchIndex + 1).
+		    (searchIndex ~~ 0) ifTrue:[
+			((selectors at:searchIndex) == thisSelector) ifTrue:[
+			    thisClass notNil ifTrue:[
+				deleteSet add:changeNr.
+				anyMore := false
+			    ]
+			]
+		    ] ifFalse:[
+			anyMore := false      
+		    ]
+		].
+	    ].
+
+	    changeNr := changeNr + 1
+	].
+
+	"finally delete what has been found"
+
+	(deleteSet size > 0) ifTrue:[
+	    index := deleteSet size.
+	    [index > 0] whileTrue:[
+		self silentDeleteChange: (changes at: (deleteSet at:index)).
+		index := index - 1
+	    ].
+	    self setChangeList
+	].
     ].
     self valueOfNotReading value: true.
     self filterField raise.
@@ -2123,17 +2122,17 @@
 
     s := className , ' ', selector.
     s size > maxLen ifTrue:[
-        l := maxLen - 1 - selector size max:20.
-        s := (className contractTo:l) , ' ' , selector.
-
-        s size > maxLen ifTrue:[
-            l := maxLen - 1 - className size max:20.
-            s := className , ' ', (selector contractTo:l).
-
-            s size > maxLen ifTrue:[
-                s := (className contractTo:(maxLen // 2 - 1)) , ' ' , (selector contractTo:maxLen // 2)
-            ]
-        ]
+	l := maxLen - 1 - selector size max:20.
+	s := (className contractTo:l) , ' ' , selector.
+
+	s size > maxLen ifTrue:[
+	    l := maxLen - 1 - className size max:20.
+	    s := className , ' ', (selector contractTo:l).
+
+	    s size > maxLen ifTrue:[
+		s := (className contractTo:(maxLen // 2 - 1)) , ' ' , (selector contractTo:maxLen // 2)
+	    ]
+	]
     ].
     ^ s
 
@@ -2144,7 +2143,7 @@
 
     self unselectChange.     
     stop to:start by:-1 do:[:changeNr|
-        self silentDeleteChange:(self listOfChanges at: changeNr)
+	self silentDeleteChange:(self listOfChanges at: changeNr)
     ].
     self setChangeList
 !
@@ -2168,7 +2167,7 @@
 
     prevMethodDefNr := changes indexOf: aChange.
     [(changes at:prevMethodDefNr) followUp] whileTrue:[
-        prevMethodDefNr := prevMethodDefNr - 1.
+	prevMethodDefNr := prevMethodDefNr - 1.
     ].
 
     "
@@ -2178,25 +2177,25 @@
     chunk isNil ifTrue:[^ nil].       "mhmh - empty"
 
     (chunk startsWith:'''---') ifTrue:[
-        words := chunk asCollectionOfWords.
-        words size > 2 ifTrue:[
-            (words at:2) = 'checkin' ifTrue:[
-                name := words at:3.
-                aChange className: name.
-                ^ name
-            ]
-        ].
+	words := chunk asCollectionOfWords.
+	words size > 2 ifTrue:[
+	    (words at:2) = 'checkin' ifTrue:[
+		name := words at:3.
+		aChange className: name.
+		^ name
+	    ]
+	].
     ].
 
     "/ fix it - otherwise, it cannot be parsed
     (chunk endsWith:'primitiveDefinitions:') ifTrue:[
-        chunk := chunk , ''''''
+	chunk := chunk , ''''''
     ].
     (chunk endsWith:'primitiveFunctions:') ifTrue:[
-        chunk := chunk , ''''''
+	chunk := chunk , ''''''
     ].
     (chunk endsWith:'primitiveVariables:') ifTrue:[
-        chunk := chunk , ''''''
+	chunk := chunk , ''''''
     ].
 
     "
@@ -2204,17 +2203,17 @@
     "
     oldDollarSetting := Parser allowDollarInIdentifier.
     [
-        Parser allowDollarInIdentifier:true.
-        aParseTree := Parser parseExpression:chunk.
+	Parser allowDollarInIdentifier:true.
+	aParseTree := Parser parseExpression:chunk.
     ] valueNowOrOnUnwindDo:[
-        Parser allowDollarInIdentifier:oldDollarSetting
+	Parser allowDollarInIdentifier:oldDollarSetting
     ].
 
     (aParseTree isNil or:[aParseTree == #Error]) ifTrue:[
-        ^ nil        "seems strange... (could be a comment)"
+	^ nil        "seems strange... (could be a comment)"
     ].
     aParseTree isMessage ifFalse:[
-        ^ nil        "very strange... (whats that ?)"
+	^ nil        "very strange... (whats that ?)"
     ].
 
     "
@@ -2238,28 +2237,28 @@
        #'renameCategory:to:'
        #'instanceVariableNames:'
     ) includes:sel) ifTrue:[
-        "
-         yes, the className is the receiver
-        "
-        (recTree notNil and:[recTree ~~ #Error]) ifTrue:[
-            isMeta := false.
-            recTree isUnaryMessage ifTrue:[
-                (recTree selector ~~ #class) ifTrue:[^ nil].
-                "id class methodsFor:..."
-                recTree := recTree receiver.
-                isMeta := true.
-            ].
-            recTree isPrimary ifTrue:[
-                name := recTree name.
-                isMeta ifTrue:[
-                    name := name , ' class'.
-                ].
-                aChange className: name.
-                ^ name
-            ]
-        ].
-        "more strange things"
-        ^ nil
+	"
+	 yes, the className is the receiver
+	"
+	(recTree notNil and:[recTree ~~ #Error]) ifTrue:[
+	    isMeta := false.
+	    recTree isUnaryMessage ifTrue:[
+		(recTree selector ~~ #class) ifTrue:[^ nil].
+		"id class methodsFor:..."
+		recTree := recTree receiver.
+		isMeta := true.
+	    ].
+	    recTree isPrimary ifTrue:[
+		name := recTree name.
+		isMeta ifTrue:[
+		    name := name , ' class'.
+		].
+		aChange className: name.
+		^ name
+	    ]
+	].
+	"more strange things"
+	^ nil
     ].
 
     "
@@ -2267,59 +2266,59 @@
     "
     (('subclass:*' match:sel) 
     or:[('variable*subclass:*' match:sel)]) ifTrue:[
-        "/ must parse the full changes text, to get
-        "/ privacy information.
-
-        changeStream := self streamForChange:aChange.
-        changeStream notNil ifTrue:[
-            chunk := changeStream nextChunk.
-            changeStream close.
-            fullParseTree := Parser parseExpression:chunk.
-            (fullParseTree isNil or:[fullParseTree == #Error]) ifTrue:[
-                fullParseTree := nil
-            ].
-            fullParseTree isMessage ifFalse:[
-                fullParseTree := nil
-            ].
-            "/ actually, the nil case cannot happen
-            fullParseTree notNil ifTrue:[
-                aParseTree := fullParseTree.
-                sel := aParseTree selector.
-            ].
-        ].
-
-        arg1Tree := aParseTree arg1.
-        (arg1Tree notNil and:[arg1Tree isConstant]) ifTrue:[
-            name := arg1Tree value asString.
-
-            "/ is it a private-class ?
-            ('*privateIn:' match:sel) ifTrue:[
-                ownerTree := aParseTree args last.
-                ownerName := ownerTree name asString.
-                name := ownerName , '::' , name
-            ].
-            aChange className: name.
-            ^ name
-        ].
-        "very strange"
-        ^ nil
+	"/ must parse the full changes text, to get
+	"/ privacy information.
+
+	changeStream := self streamForChange:aChange.
+	changeStream notNil ifTrue:[
+	    chunk := changeStream nextChunk.
+	    changeStream close.
+	    fullParseTree := Parser parseExpression:chunk.
+	    (fullParseTree isNil or:[fullParseTree == #Error]) ifTrue:[
+		fullParseTree := nil
+	    ].
+	    fullParseTree isMessage ifFalse:[
+		fullParseTree := nil
+	    ].
+	    "/ actually, the nil case cannot happen
+	    fullParseTree notNil ifTrue:[
+		aParseTree := fullParseTree.
+		sel := aParseTree selector.
+	    ].
+	].
+
+	arg1Tree := aParseTree arg1.
+	(arg1Tree notNil and:[arg1Tree isConstant]) ifTrue:[
+	    name := arg1Tree value asString.
+
+	    "/ is it a private-class ?
+	    ('*privateIn:' match:sel) ifTrue:[
+		ownerTree := aParseTree args last.
+		ownerName := ownerTree name asString.
+		name := ownerName , '::' , name
+	    ].
+	    aChange className: name.
+	    ^ name
+	].
+	"very strange"
+	^ nil
     ].
 
     "
      is it a class remove ?
     "
     (sel == #removeClass:) ifTrue:[
-        (recTree notNil 
-        and:[recTree ~~ #Error
-        and:[recTree isPrimary
-        and:[recTree name = 'Smalltalk']]]) ifTrue:[
-            arg1Tree := aParseTree arg1.
-            (arg1Tree notNil and:[arg1Tree isPrimary]) ifTrue:[
-                name := arg1Tree name.
-                aChange className: name.
-                ^ name
-            ].
-        ]
+	(recTree notNil 
+	and:[recTree ~~ #Error
+	and:[recTree isPrimary
+	and:[recTree name = 'Smalltalk']]]) ifTrue:[
+	    arg1Tree := aParseTree arg1.
+	    (arg1Tree notNil and:[arg1Tree isPrimary]) ifTrue:[
+		name := arg1Tree name.
+		aChange className: name.
+		^ name
+	    ].
+	]
     ].
 
     "
@@ -2327,26 +2326,26 @@
     "
     ((sel == #category:)
     or:[sel == #privacy:]) ifTrue:[
-        (recTree notNil 
-        and:[recTree ~~ #Error
-        and:[recTree isMessage
-        and:[recTree selector == #compiledMethodAt:]]]) ifTrue:[
-            isMeta := false.
-            recTree := recTree receiver.
-            recTree isUnaryMessage ifTrue:[
-                (recTree selector ~~ #class) ifTrue:[^ nil].
-                "id class "
-                recTree := recTree receiver
-            ].
-            recTree isPrimary ifTrue:[
-                isMeta ifTrue:[
-                    name := name , ' class'.
-                ].
-                name := recTree name.
-                aChange className: name.
-                ^ name
-            ]
-        ]
+	(recTree notNil 
+	and:[recTree ~~ #Error
+	and:[recTree isMessage
+	and:[recTree selector == #compiledMethodAt:]]]) ifTrue:[
+	    isMeta := false.
+	    recTree := recTree receiver.
+	    recTree isUnaryMessage ifTrue:[
+		(recTree selector ~~ #class) ifTrue:[^ nil].
+		"id class "
+		recTree := recTree receiver
+	    ].
+	    recTree isPrimary ifTrue:[
+		isMeta ifTrue:[
+		    name := name , ' class'.
+		].
+		name := recTree name.
+		aChange className: name.
+		^ name
+	    ]
+	]
     ].
     ^ nil
 !
@@ -2363,17 +2362,17 @@
      and a list of chunk-positions (changePositions).
      Starting with 2.10.3, the entries are multi-col entries;
      the cols are:
-        1   delta (only if comparing)
-                '+' -> new method (w.r.t. current state)
-                '-' -> removed method (w.r.t. current state)
-                '?' -> class does not exist currently
-                '=' -> change is same as current methods source
-        2   class/selector
-        3   type of change
-                doit
-                method
-                category change
-        4   timestamp
+	1   delta (only if comparing)
+		'+' -> new method (w.r.t. current state)
+		'-' -> removed method (w.r.t. current state)
+		'?' -> class does not exist currently
+		'=' -> change is same as current methods source
+	2   class/selector
+	3   type of change
+		doit
+		method
+		category change
+	4   timestamp
 
      since comparing slows down startup time, it is now disabled by
      default and can be enabled via a toggle."
@@ -2402,324 +2401,324 @@
     self filterLabel label: 'Read:'; redraw.
 
     self withReadCursorDo:[
-        |myProcess myPriority|
-
-        "
-         this is a time consuming operation (especially, if reading an
-         NFS-mounted directory; therefore lower my priority...
-        "
-        inBackground ifTrue:[
-            myProcess := Processor activeProcess.
-            myPriority := myProcess priority.
-            myProcess priority:(Processor userBackgroundPriority).
-        ].
-
-        [
-            |excla timeStampInfo lastChange|
-
-            excla := aStream class chunkSeparator.
-
-            [aStream atEnd] whileFalse:[
-                |change changeDelta changeString changeType changeCategory
-                 line s l changeClass sawExcla category 
-                 chunkText chunkPos sel oldValue|
-
-                change := Change new.
-                "
-                 get a chunk (separated by excla)
-                "
-                oldValue := self valueOfReadProgress value.
-                self valueOfReadProgress value: (((aStream position/aStream size) * 100) rounded).
-                oldValue ~~ self valueOfReadProgress value
-                    ifTrue: [self readProgressIndicator redrawEdges;redraw].
-
-                aStream skipSeparators.
-                chunkPos := aStream position.
-
-                sawExcla := aStream peekFor:excla.
-                chunkText := aStream nextChunk.
-                chunkText notNil ifTrue:[
-                    |index headerLine cls|
-
-                    (chunkText startsWith:'''---- timestamp ') ifTrue:[
-                        timeStampInfo := (chunkText copyFrom:16 to:(chunkText size - 6)) withoutSpaces.
-                    ] ifFalse:[
-
-                        "
-                         only first line is saved in changeChunks...
-                        "
-                        index := chunkText indexOf:(Character cr).
-                        (index ~~ 0) ifTrue:[
-                            chunkText := chunkText copyTo:(index - 1).
-
-                            "take care for comment changes - must still be a
-                             valid expression for classNameOfChange: to work"
-
-                            (chunkText endsWith:'comment:''') ifTrue:[
-                                chunkText := chunkText , '...'''
-                            ].
-                            (chunkText endsWith:'primitiveDefinitions:''') ifTrue:[
-                                sel := 'primitiveDefinitions:'.
-                                chunkText := chunkText copyWithoutLast:1
-                            ].
-                            (chunkText endsWith:'primitiveVariables:''') ifTrue:[
-                                sel := 'primitiveVariables:'.
-                                chunkText := chunkText copyWithoutLast:1
-                            ].
-                            (chunkText endsWith:'primitiveFunctions:''') ifTrue:[
-                                sel := 'primitiveFunctions:'.
-                                chunkText := chunkText copyWithoutLast:1
-                            ].
-                        ].
-
-                        change chunk: chunkText.
-                        change position: chunkPos. 
-                        lastChange notNil ifTrue: [lastChange lastPosition: chunkPos - 1].
-                        lastChange := change.
-                        change timeStamp: timeStampInfo.
-                        change followUp: false.
-                        headerLine := nil.
-                        changeDelta := ' '.
-
-                        sawExcla ifFalse:[
-                            (chunkText startsWith:'''---- snap') ifTrue:[
-                                changeType := ''.
-                                headerLine := chunkText.
-                                changeString := (chunkText contractTo:maxLen).
-                                timeStampInfo := nil.
-                            ] ifFalse:[
-
-                                |p cls|
-
-                                headerLine := chunkText , ' (doIt)'.
-
-                                "
-                                 first, assume doIt - then lets have a more detailed look...
-                                "
-                                ((chunkText startsWith:'''---- file')
-                                or:[(chunkText startsWith:'''---- check')]) ifTrue:[
-                                    changeType := ''.
-                                    timeStampInfo := nil.
-                                ] ifFalse:[
-                                    changeType := 'doIt'.
-                                ].    
-                                changeString := (chunkText contractTo:maxLen).
-
-                                p := Parser parseExpression:chunkText inNameSpace:Smalltalk.
-                                (p notNil 
-                                 and:[p ~~ #Error
-                                 and:[p isMessage]]) ifTrue:[
-                                    sel := p selector.
-                                ].
-                                (sel == #removeSelector:) ifTrue:[
-                                    p receiver isUnaryMessage ifTrue:[
-                                        cls := p receiver receiver name.
-                                        changeClass := (Smalltalk classNamed:cls) class.
-                                        cls := cls , ' class'.
-                                    ] ifFalse:[
-                                        cls := p receiver name.
-                                        changeClass := (Smalltalk classNamed:cls)
-                                    ].
-                                    sel := (p args at:1) evaluate.
-
-                                    DeltaInfoColumn ifTrue:[
-                                        (changeClass isNil or:[changeClass isLoaded not]) ifTrue:[
-                                            changeDelta := '?'
-                                        ] ifFalse:[
-                                            (changeClass implements:sel asSymbol) ifTrue:[
-                                                changeDelta := '-'.
-                                            ]
-                                        ]
-                                    ].
-                                    changeType := 'remove'.
-                                    changeString := self contractClass:cls selector:sel to:maxLen.
-                                ].
-                                (p ~~ #Error
-                                and:[p isMessage 
-                                and:[p receiver isMessage
-                                and:[p receiver selector == #compiledMethodAt:]]]) ifTrue:[
-                                    p receiver receiver isUnaryMessage ifTrue:[
-                                        cls := p receiver receiver receiver name.
-                                        changeClass := (Smalltalk classNamed:cls) class.
-                                        cls := cls , ' class'.
-                                    ] ifFalse:[
-                                        cls := p receiver receiver name.
-                                        changeClass := (Smalltalk classNamed:cls)
-                                    ].
-                                    (sel == #category:) ifTrue:[
-                                        sel := (p receiver args at:1) evaluate.
-                                        changeType := '(category change)'.
-                                        changeString := self contractClass:cls selector:sel to:maxLen.
-                                    ].
-                                    (sel == #privacy:) ifTrue:[
-                                        sel := (p receiver args at:1) evaluate.
-                                        changeType := 'privacy change'.
-                                        changeString := self contractClass:cls selector:sel to:maxLen.
-                                    ].
-                                ].
-                                (#(#'subclass:'
-                                  #'variableSubclass:'
-                                  #'variableByteSubclass:'
-                                  #'variableWordSubclass:'
-                                  #'variableLongSubclass:'
-                                  #'variableFloatSubclass:'
-                                  #'variableDoubleSubclass:'
-                                  #'primitiveDefinitions:'
-                                  #'primitiveFunctions:'
-                                  #'primitiveVariables:'
-                                 ) includes:sel) ifTrue:[
-                                    changeType := 'class definition'.
-                                ].
-                            ]
-                        ] ifTrue:[
-                            |done first p className cls text methodPos|
-
-                            "
-                             method definitions actually consist of
-                             two (or more) chunks; skip next chunk(s)
-                             up to an empty one.
-                             The system only writes one chunk,
-                             and we cannot handle more in this ChangesBrowser....
-                            "
-                            className := nil.
-                            p := Parser parseExpression:chunkText inNameSpace:Smalltalk.
-
-                            (p notNil and:[p ~~ #Error]) ifTrue:[
-                                sel := p selector.
-                                (sel == #methodsFor:) ifTrue:[
-                                    p receiver isUnaryMessage ifTrue:[
-                                        className := p receiver receiver name.
-                                        changeClass := (Smalltalk classNamed:className) class.
-                                        className := className , ' class'.
-                                    ] ifFalse:[
-                                        className := p receiver name.
-                                        changeClass := Smalltalk classNamed:className
-                                    ].
-                                    category := (p args at:1) evaluate.
-                                ].
-                            ].
-
-                            done := false.
-                            first := true.
-                            [done] whileFalse:[
-
-                                changeDelta := ' '.
-                                methodPos := aStream position.
-
-                                text := aStream nextChunk.
-                                text isNil ifTrue:[
-                                    done := true
-                                ] ifFalse:[
-                                    done := text isEmpty
-                                ].
-                                done ifFalse:[
-                                    first ifFalse:[
-                                        change := Change new.
-                                        change chunk: chunkText.
-                                        change string:changeString.
-                                        change position: methodPos. 
-                                        change className: className. 
-                                        lastChange notNil ifTrue: [lastChange lastPosition: methodPos - 1].
-                                        lastChange := change.
-                                        change timeStamp: timeStampInfo.
-                                        change followUp: true.
-                                        editingClassSource := true.
-                                    ].
-
-                                    first := false.
-                                    "
-                                     try to find the selector
-                                    "
-                                    sel := nil.
-                                    className notNil ifTrue:[
-                                        p := Parser 
-                                                 parseMethodSpecification:text
-                                                 in:nil
-                                                 ignoreErrors:true
-                                                 ignoreWarnings:true.
-                                        (p notNil and:[p ~~ #Error]) ifTrue:[
-                                            sel := p selector.
-                                        ]
-                                    ].
-
-                                    sel isNil ifTrue:[
-                                        changeString := (chunkText contractTo:maxLen).
-                                        changeType := 'change'.
-                                        headerLine := chunkText , ' (change)'.
-                                    ] ifFalse:[
-                                        changeString :=  self contractClass:className selector:sel to:maxLen.
-                                        changeType := 'method definition'.
-                                        changeCategory := category.
-                                        headerLine := className , ' ' , sel , ' ' , '(change category: ''' , category , ''')'.
-                                    ].
-
-                                    DeltaInfoColumn ifTrue:[ 
-                                        changeClass isNil ifFalse:[
-                                            changeClass isMeta ifTrue:[
-                                                cls := changeClass soleInstance
-                                            ] ifFalse:[
-                                                cls := changeClass
-                                            ].
-                                        ].
-
-                                        (changeClass isNil or:[cls isLoaded not]) ifTrue:[
-                                            changeDelta := '?'
-                                        ] ifFalse:[
-                                            (changeClass implements:sel asSymbol) ifFalse:[
-                                                changeDelta := '+'.
-                                            ] ifTrue:[
-                                                |m currentText t1 t2|
-
-                                                m := changeClass compiledMethodAt:sel asSymbol.
-                                                currentText := m source.
-                                                currentText notNil ifTrue:[
-                                                    text asString = currentText asString ifTrue:[
-                                                        changeDelta := '='
-                                                    ] ifFalse:[
-                                                        t1 := currentText asCollectionOfLines collect:[:s | s withTabsExpanded].
-                                                        t2 := text asCollectionOfLines collect:[:s | s withTabsExpanded].
-                                                        t1 = t2 ifTrue:[
-                                                            changeDelta := '='
-                                                        ]
-                                                    ]
-                                                ]
-                                            ]
-                                        ]
-                                    ].
-                                    change delta:changeDelta.
-                                    change string:changeString.
-                                    change type:changeType.
-                                    change category: changeCategory.
-                                    change timeStamp:timeStampInfo.
-                                    changes add:change.
-                                ].
-                                changeString := nil.
-                                headerLine := nil.
-
-                            ]
-                        ].
-                        changeString notNil ifTrue:[
-                            change delta:changeDelta.
-                            change string:changeString.
-                            change type:changeType.
-                            change timeStamp:timeStampInfo.
-                            changes add:change.
-
-                        ] ifFalse:[
-                            headerLine notNil ifTrue:[     
-                                changes add: change.
-                            ]
-                        ]
-                    ]
-                ]. 
-                change lastPosition: aStream position.
-            ].
-            modified := false.
-
-        ] valueNowOrOnUnwindDo:[ 
-            aStream close.
-            inBackground ifTrue:[myProcess priority:myPriority].
-        ].
+	|myProcess myPriority|
+
+	"
+	 this is a time consuming operation (especially, if reading an
+	 NFS-mounted directory; therefore lower my priority...
+	"
+	inBackground ifTrue:[
+	    myProcess := Processor activeProcess.
+	    myPriority := myProcess priority.
+	    myProcess priority:(Processor userBackgroundPriority).
+	].
+
+	[
+	    |excla timeStampInfo lastChange|
+
+	    excla := aStream class chunkSeparator.
+
+	    [aStream atEnd] whileFalse:[
+		|change changeDelta changeString changeType changeCategory
+		 line s l changeClass sawExcla category 
+		 chunkText chunkPos sel oldValue|
+
+		change := Change new.
+		"
+		 get a chunk (separated by excla)
+		"
+		oldValue := self valueOfReadProgress value.
+		self valueOfReadProgress value: (((aStream position/aStream size) * 100) rounded).
+		oldValue ~~ self valueOfReadProgress value
+		    ifTrue: [self readProgressIndicator redrawEdges;redraw].
+
+		aStream skipSeparators.
+		chunkPos := aStream position.
+
+		sawExcla := aStream peekFor:excla.
+		chunkText := aStream nextChunk.
+		chunkText notNil ifTrue:[
+		    |index headerLine cls|
+
+		    (chunkText startsWith:'''---- timestamp ') ifTrue:[
+			timeStampInfo := (chunkText copyFrom:16 to:(chunkText size - 6)) withoutSpaces.
+		    ] ifFalse:[
+
+			"
+			 only first line is saved in changeChunks...
+			"
+			index := chunkText indexOf:(Character cr).
+			(index ~~ 0) ifTrue:[
+			    chunkText := chunkText copyTo:(index - 1).
+
+			    "take care for comment changes - must still be a
+			     valid expression for classNameOfChange: to work"
+
+			    (chunkText endsWith:'comment:''') ifTrue:[
+				chunkText := chunkText , '...'''
+			    ].
+			    (chunkText endsWith:'primitiveDefinitions:''') ifTrue:[
+				sel := 'primitiveDefinitions:'.
+				chunkText := chunkText copyWithoutLast:1
+			    ].
+			    (chunkText endsWith:'primitiveVariables:''') ifTrue:[
+				sel := 'primitiveVariables:'.
+				chunkText := chunkText copyWithoutLast:1
+			    ].
+			    (chunkText endsWith:'primitiveFunctions:''') ifTrue:[
+				sel := 'primitiveFunctions:'.
+				chunkText := chunkText copyWithoutLast:1
+			    ].
+			].
+
+			change chunk: chunkText.
+			change position: chunkPos. 
+			lastChange notNil ifTrue: [lastChange lastPosition: chunkPos - 1].
+			lastChange := change.
+			change timeStamp: timeStampInfo.
+			change followUp: false.
+			headerLine := nil.
+			changeDelta := ' '.
+
+			sawExcla ifFalse:[
+			    (chunkText startsWith:'''---- snap') ifTrue:[
+				changeType := ''.
+				headerLine := chunkText.
+				changeString := (chunkText contractTo:maxLen).
+				timeStampInfo := nil.
+			    ] ifFalse:[
+
+				|p cls|
+
+				headerLine := chunkText , ' (doIt)'.
+
+				"
+				 first, assume doIt - then lets have a more detailed look...
+				"
+				((chunkText startsWith:'''---- file')
+				or:[(chunkText startsWith:'''---- check')]) ifTrue:[
+				    changeType := ''.
+				    timeStampInfo := nil.
+				] ifFalse:[
+				    changeType := 'doIt'.
+				].    
+				changeString := (chunkText contractTo:maxLen).
+
+				p := Parser parseExpression:chunkText inNameSpace:Smalltalk.
+				(p notNil 
+				 and:[p ~~ #Error
+				 and:[p isMessage]]) ifTrue:[
+				    sel := p selector.
+				].
+				(sel == #removeSelector:) ifTrue:[
+				    p receiver isUnaryMessage ifTrue:[
+					cls := p receiver receiver name.
+					changeClass := (Smalltalk classNamed:cls) class.
+					cls := cls , ' class'.
+				    ] ifFalse:[
+					cls := p receiver name.
+					changeClass := (Smalltalk classNamed:cls)
+				    ].
+				    sel := (p args at:1) evaluate.
+
+				    DeltaInfoColumn ifTrue:[
+					(changeClass isNil or:[changeClass isLoaded not]) ifTrue:[
+					    changeDelta := '?'
+					] ifFalse:[
+					    (changeClass implements:sel asSymbol) ifTrue:[
+						changeDelta := '-'.
+					    ]
+					]
+				    ].
+				    changeType := 'remove'.
+				    changeString := self contractClass:cls selector:sel to:maxLen.
+				].
+				(p ~~ #Error
+				and:[p isMessage 
+				and:[p receiver isMessage
+				and:[p receiver selector == #compiledMethodAt:]]]) ifTrue:[
+				    p receiver receiver isUnaryMessage ifTrue:[
+					cls := p receiver receiver receiver name.
+					changeClass := (Smalltalk classNamed:cls) class.
+					cls := cls , ' class'.
+				    ] ifFalse:[
+					cls := p receiver receiver name.
+					changeClass := (Smalltalk classNamed:cls)
+				    ].
+				    (sel == #category:) ifTrue:[
+					sel := (p receiver args at:1) evaluate.
+					changeType := '(category change)'.
+					changeString := self contractClass:cls selector:sel to:maxLen.
+				    ].
+				    (sel == #privacy:) ifTrue:[
+					sel := (p receiver args at:1) evaluate.
+					changeType := 'privacy change'.
+					changeString := self contractClass:cls selector:sel to:maxLen.
+				    ].
+				].
+				(#(#'subclass:'
+				  #'variableSubclass:'
+				  #'variableByteSubclass:'
+				  #'variableWordSubclass:'
+				  #'variableLongSubclass:'
+				  #'variableFloatSubclass:'
+				  #'variableDoubleSubclass:'
+				  #'primitiveDefinitions:'
+				  #'primitiveFunctions:'
+				  #'primitiveVariables:'
+				 ) includes:sel) ifTrue:[
+				    changeType := 'class definition'.
+				].
+			    ]
+			] ifTrue:[
+			    |done first p className cls text methodPos|
+
+			    "
+			     method definitions actually consist of
+			     two (or more) chunks; skip next chunk(s)
+			     up to an empty one.
+			     The system only writes one chunk,
+			     and we cannot handle more in this ChangesBrowser....
+			    "
+			    className := nil.
+			    p := Parser parseExpression:chunkText inNameSpace:Smalltalk.
+
+			    (p notNil and:[p ~~ #Error]) ifTrue:[
+				sel := p selector.
+				(sel == #methodsFor:) ifTrue:[
+				    p receiver isUnaryMessage ifTrue:[
+					className := p receiver receiver name.
+					changeClass := (Smalltalk classNamed:className) class.
+					className := className , ' class'.
+				    ] ifFalse:[
+					className := p receiver name.
+					changeClass := Smalltalk classNamed:className
+				    ].
+				    category := (p args at:1) evaluate.
+				].
+			    ].
+
+			    done := false.
+			    first := true.
+			    [done] whileFalse:[
+
+				changeDelta := ' '.
+				methodPos := aStream position.
+
+				text := aStream nextChunk.
+				text isNil ifTrue:[
+				    done := true
+				] ifFalse:[
+				    done := text isEmpty
+				].
+				done ifFalse:[
+				    first ifFalse:[
+					change := Change new.
+					change chunk: chunkText.
+					change string:changeString.
+					change position: methodPos. 
+					change className: className. 
+					lastChange notNil ifTrue: [lastChange lastPosition: methodPos - 1].
+					lastChange := change.
+					change timeStamp: timeStampInfo.
+					change followUp: true.
+					editingClassSource := true.
+				    ].
+
+				    first := false.
+				    "
+				     try to find the selector
+				    "
+				    sel := nil.
+				    className notNil ifTrue:[
+					p := Parser 
+						 parseMethodSpecification:text
+						 in:nil
+						 ignoreErrors:true
+						 ignoreWarnings:true.
+					(p notNil and:[p ~~ #Error]) ifTrue:[
+					    sel := p selector.
+					]
+				    ].
+
+				    sel isNil ifTrue:[
+					changeString := (chunkText contractTo:maxLen).
+					changeType := 'change'.
+					headerLine := chunkText , ' (change)'.
+				    ] ifFalse:[
+					changeString :=  self contractClass:className selector:sel to:maxLen.
+					changeType := 'method definition'.
+					changeCategory := category.
+					headerLine := className , ' ' , sel , ' ' , '(change category: ''' , category , ''')'.
+				    ].
+
+				    DeltaInfoColumn ifTrue:[ 
+					changeClass isNil ifFalse:[
+					    changeClass isMeta ifTrue:[
+						cls := changeClass soleInstance
+					    ] ifFalse:[
+						cls := changeClass
+					    ].
+					].
+
+					(changeClass isNil or:[cls isLoaded not]) ifTrue:[
+					    changeDelta := '?'
+					] ifFalse:[
+					    (changeClass implements:sel asSymbol) ifFalse:[
+						changeDelta := '+'.
+					    ] ifTrue:[
+						|m currentText t1 t2|
+
+						m := changeClass compiledMethodAt:sel asSymbol.
+						currentText := m source.
+						currentText notNil ifTrue:[
+						    text asString = currentText asString ifTrue:[
+							changeDelta := '='
+						    ] ifFalse:[
+							t1 := currentText asCollectionOfLines collect:[:s | s withTabsExpanded].
+							t2 := text asCollectionOfLines collect:[:s | s withTabsExpanded].
+							t1 = t2 ifTrue:[
+							    changeDelta := '='
+							]
+						    ]
+						]
+					    ]
+					]
+				    ].
+				    change delta:changeDelta.
+				    change string:changeString.
+				    change type:changeType.
+				    change category: changeCategory.
+				    change timeStamp:timeStampInfo.
+				    changes add:change.
+				].
+				changeString := nil.
+				headerLine := nil.
+
+			    ]
+			].
+			changeString notNil ifTrue:[
+			    change delta:changeDelta.
+			    change string:changeString.
+			    change type:changeType.
+			    change timeStamp:timeStampInfo.
+			    changes add:change.
+
+			] ifFalse:[
+			    headerLine notNil ifTrue:[     
+				changes add: change.
+			    ]
+			]
+		    ]
+		]. 
+		change lastPosition: aStream position.
+	    ].
+	    modified := false.
+
+	] valueNowOrOnUnwindDo:[ 
+	    aStream close.
+	    inBackground ifTrue:[myProcess priority:myPriority].
+	].
     ].
     self setChangeList.
     self valueOfNotReading value: true.
@@ -2740,13 +2739,13 @@
     source isNil ifTrue:[^ nil].
 
     parser := Parser 
-                parseMethod:source 
-                in:nil 
-                ignoreErrors:true 
-                ignoreWarnings:true.
+		parseMethod:source 
+		in:nil 
+		ignoreErrors:true 
+		ignoreWarnings:true.
 
     (parser notNil and:[parser ~~ #Error]) ifTrue:[
-        sel := parser selector.
+	sel := parser selector.
     ].
     ^ sel
 !
@@ -2776,14 +2775,14 @@
     index := stop.          
     [index >= start] whileTrue:
     [                                         
-        ((clsName := self classNameOfChange:(self listOfChanges at: index)) notNil and:
-        [(clsName = aClassName or: [PrivateAsSeparate not and: [(clsName upTo: $:) = aClassName]])])
-        ifTrue:
-        [     
-            self silentDeleteChange:(self listOfChanges at: index).
-            numDeleted := numDeleted + 1.
-        ].
-        index := index - 1
+	((clsName := self classNameOfChange:(self listOfChanges at: index)) notNil and:
+	[(clsName = aClassName or: [PrivateAsSeparate not and: [(clsName upTo: $:) = aClassName]])])
+	ifTrue:
+	[     
+	    self silentDeleteChange:(self listOfChanges at: index).
+	    numDeleted := numDeleted + 1.
+	].
+	index := index - 1
     ].
     ^ numDeleted
 !
@@ -2797,20 +2796,20 @@
     aStream isNil ifTrue:[^ nil].
 
     aChange followUp ifFalse:[
-        sawExcla := aStream peekFor:(aStream class chunkSeparator).
-        chunk := aStream nextChunk.
+	sawExcla := aStream peekFor:(aStream class chunkSeparator).
+	chunk := aStream nextChunk.
     ] ifTrue:[
-        chunk := aChange chunk.
-        sawExcla := true.
+	chunk := aChange chunk.
+	sawExcla := true.
     ].
 
     sawExcla ifTrue:[
-        parseTree := Parser parseExpression:chunk.
-        (parseTree notNil and:[parseTree isMessage]) ifTrue:[
-            (parseTree selector == #methodsFor:) ifTrue:[
-                sourceChunk := aStream nextChunk.
-            ]
-        ].
+	parseTree := Parser parseExpression:chunk.
+	(parseTree notNil and:[parseTree isMessage]) ifTrue:[
+	    (parseTree selector == #methodsFor:) ifTrue:[
+		sourceChunk := aStream nextChunk.
+	    ]
+	].
     ].
     aStream close.
     ^ sourceChunk
@@ -2844,7 +2843,7 @@
 
     (change := self selectionOfChange value) notNil 
     ifTrue:[
-        self withExecuteCursorDo:[aBlock value:change]
+	self withExecuteCursorDo:[aBlock value:change]
     ]
 ! !
 
@@ -2856,14 +2855,14 @@
     self valueOfNotSaving value ifFalse: [^nil].
 
     modified ifTrue:[
-        (OptionBox 
-              request:(resources string:'Changes list was modified !!') withCRs
-              label:'Changes Browser'
-              form:(WarningBox iconBitmap)
-              buttonLabels:(resources array:#('Cancel' 'Forget it and proceed'))
-              values:#(#abort #ignore)
-              default:#save
-        ) == #abort ifTrue:[^self].
+	(OptionBox 
+	      request:(resources string:'Changes list was modified !!') withCRs
+	      label:'Changes Browser'
+	      form:(WarningBox iconBitmap)
+	      buttonLabels:(resources array:#('Cancel' 'Forget it and proceed'))
+	      values:#(#abort #ignore)
+	      default:#save
+	) == #abort ifTrue:[^self].
     ].
     super closeRequest
 
@@ -2878,10 +2877,10 @@
 
     builder namedComponents do: 
     [:aView|    
-        aView allSubViewsDo: 
-        [:v|
-            v redraw
-        ] 
+	aView allSubViewsDo: 
+	[:v|
+	    v redraw
+	] 
     ].
 
     autoUpdateBlock := [self checkIfFileHasChanged].
@@ -2890,39 +2889,39 @@
 
     self filterField entryCompletionBlock:
     (filterCompletionBlock := [:value|
-        |filter filters i changesCopy|
-        self unselectChange.
-        filter := self filterField contents.
-        (filters := filter asArrayOfSubstrings) size > 0 ifTrue: 
-        [
-            i := 0.
-            changesCopy := changes copy.
-            filters do: 
-            [:filter|
-                i := i + 1.
-                changesCopy contents: 
-                    (changesCopy select: [:row| 
-                        filter match: (row string asArrayOfSubstrings at: i ifAbsent: [''''])])
-            ].            
-            self listOfChanges contents: changesCopy
-        ] 
-        ifFalse: 
-        [
-            self listOfChanges contents: changes
-        ].
-        self autoSelectLast.
+	|filter filters i changesCopy|
+	self unselectChange.
+	filter := self filterField contents.
+	(filters := filter asArrayOfSubstrings) size > 0 ifTrue: 
+	[
+	    i := 0.
+	    changesCopy := changes copy.
+	    filters do: 
+	    [:filter|
+		i := i + 1.
+		changesCopy contents: 
+		    (changesCopy select: [:row| 
+			filter match: (row string asArrayOfSubstrings at: i ifAbsent: [''''])])
+	    ].            
+	    self listOfChanges contents: changesCopy
+	] 
+	ifFalse: 
+	[
+	    self listOfChanges contents: changes
+	].
+	self autoSelectLast.
     ]).
 
     Object errorSignal handle: [:ex |
-        ex parameter signal == HaltSignal ifTrue:[
-            ex reject
-        ].
-        ex parameter signal == MessageTracer breakpointSignal ifTrue:[
-            ex reject
-        ].
-        self warn:'Error while reading changes file:\\' , ex errorString.
+	ex parameter signal == HaltSignal ifTrue:[
+	    ex reject
+	].
+	ex parameter signal == MessageTracer breakpointSignal ifTrue:[
+	    ex reject
+	].
+	self warn:'Error while reading changes file:\\' , ex errorString.
     ] do: [
-        self readChangesFileInBackground:true
+	self readChangesFileInBackground:true
     ].
 
     "Modified: / 30.7.1998 / 11:37:51 / cg"
@@ -2941,9 +2940,9 @@
     "applies the selected change"
 
     self withSelectedChangeDo:[:change|
-        skipSignal := nil.
-        self applyChange:change.
-        self autoSelectChange: (self listOfChanges at: (self listOfChanges indexOf: change) + 1 ifAbsent: [^self autoSelectLast])
+	skipSignal := nil.
+	self applyChange:change.
+	self autoSelectChange: (self listOfChanges at: (self listOfChanges indexOf: change) + 1 ifAbsent: [^self autoSelectLast])
     ]
 !
 
@@ -2951,14 +2950,14 @@
     "applies all changes"
 
     self withExecuteCursorDo:[
-        |change|
-        self unselectChange.
-        skipSignal isNil ifTrue:[skipSignal := Signal new].
-        1 to:self listOfChanges size do:[:changeNr |
-            self selectionOfChange value:(change := self listOfChanges at: changeNr).
-            self applyChange:change
-        ].
-        self autoSelectLast
+	|change|
+	self unselectChange.
+	skipSignal isNil ifTrue:[skipSignal := Signal new].
+	1 to:self listOfChanges size do:[:changeNr |
+	    self selectionOfChange value:(change := self listOfChanges at: changeNr).
+	    self applyChange:change
+	].
+	self autoSelectLast
     ]
 
 !
@@ -2981,27 +2980,27 @@
     "applies changes with same class like the selected one from start to end"
 
     self withSelectedChangeDo:[:change|
-        |classNameToApply thisClassName lastChange change2|
-        (classNameToApply := self classNameOfChange:change) notNil 
-        ifTrue:
-        [             
-            self unselectChange.
-            skipSignal isNil ifTrue:[skipSignal := Signal new].
-            start to:self listOfChanges size do:
-            [:changeNr|
-                change2 := self listOfChanges at: changeNr.
-                ((thisClassName := self classNameOfChange:change2) notNil and:
-                [thisClassName = classNameToApply or:
-                [PrivateAsSeparate not and: [(thisClassName upTo: $:) = classNameToApply]]])
-                ifTrue:
-                [                           
-                    self selectionOfChange value: change2.
-                    self applyChange:change2.
-                    lastChange := change2
-                ]
-            ].
-            self autoSelectChange:lastChange.
-        ]
+	|classNameToApply thisClassName lastChange change2|
+	(classNameToApply := self classNameOfChange:change) notNil 
+	ifTrue:
+	[             
+	    self unselectChange.
+	    skipSignal isNil ifTrue:[skipSignal := Signal new].
+	    start to:self listOfChanges size do:
+	    [:changeNr|
+		change2 := self listOfChanges at: changeNr.
+		((thisClassName := self classNameOfChange:change2) notNil and:
+		[thisClassName = classNameToApply or:
+		[PrivateAsSeparate not and: [(thisClassName upTo: $:) = classNameToApply]]])
+		ifTrue:
+		[                           
+		    self selectionOfChange value: change2.
+		    self applyChange:change2.
+		    lastChange := change2
+		]
+	    ].
+	    self autoSelectChange:lastChange.
+	]
     ]
 
 !
@@ -3017,13 +3016,13 @@
     "applies all changes from selected one to be end"
 
     self withSelectedChangeDo:[:change|
-        self unselectChange.
-        skipSignal isNil ifTrue:[skipSignal := Signal new].
-        (self listOfChanges indexOf: change) to: self listOfChanges size do:[:changeNr|
-            self selectionOfChange value:(self listOfChanges at: changeNr).
-            self applyChange:(self listOfChanges at: changeNr)
-        ].
-        self autoSelectChange:self listOfChanges last
+	self unselectChange.
+	skipSignal isNil ifTrue:[skipSignal := Signal new].
+	(self listOfChanges indexOf: change) to: self listOfChanges size do:[:changeNr|
+	    self selectionOfChange value:(self listOfChanges at: changeNr).
+	    self applyChange:(self listOfChanges at: changeNr)
+	].
+	self autoSelectChange:self listOfChanges last
     ]
 
 !
@@ -3035,17 +3034,17 @@
 
     className := self fullClassNameOfChange:self selectionOfChange value.
     className notNil ifTrue:[
-        isMeta := false.
-        (className endsWith:' class') ifTrue:[
-            className := className copyWithoutLast:6.
-            isMeta := true.
-        ].
-        (cls := Smalltalk classNamed:className) notNil ifTrue:[
-            isMeta ifTrue:[cls := cls class].
-            SystemBrowser 
-                openInClass:cls 
-                selector:(self selectorOfMethodChange:self selectionOfChange value)
-        ]
+	isMeta := false.
+	(className endsWith:' class') ifTrue:[
+	    className := className copyWithoutLast:6.
+	    isMeta := true.
+	].
+	(cls := Smalltalk classNamed:className) notNil ifTrue:[
+	    isMeta ifTrue:[cls := cls class].
+	    SystemBrowser 
+		openInClass:cls 
+		selector:(self selectorOfMethodChange:self selectionOfChange value)
+	]
     ]
 
 
@@ -3058,7 +3057,7 @@
     |change|
 
     (change := self selectionOfChange value) notNil ifTrue:[
-        self withExecuteCursorDo:[self compareChange:change]
+	self withExecuteCursorDo:[self compareChange:change]
     ].
     self newLabel:''
 !
@@ -3075,8 +3074,8 @@
     self updateInfoLabel.
 
     self information: 
-        'Compression Rate:   ', (((changesSizeBefore - changes size)/changesSizeBefore) * 100) rounded printString, '%\' withCRs,
-        'Obsolete Changes: ', (changesSizeBefore - changes size) printString, ' from ', changesSizeBefore printString
+	'Compression Rate:   ', (((changesSizeBefore - changes size)/changesSizeBefore) * 100) rounded printString, '%\' withCRs,
+	'Obsolete Changes: ', (changesSizeBefore - changes size) printString, ' from ', changesSizeBefore printString
 
 
 
@@ -3088,13 +3087,13 @@
      this replaces multiple method-changes by the last (i.e. the most recent) change."
 
     self withSelectedChangeDo:[:change|
-        | classNameToCompress |
-
-        (classNameToCompress := self classNameOfChange:change) notNil ifTrue:[
-            self compressForClass:classNameToCompress.
-            filterCompletionBlock value: self valueOfFilter value.
-            self autoSelectLast
-        ]
+	| classNameToCompress |
+
+	(classNameToCompress := self classNameOfChange:change) notNil ifTrue:[
+	    self compressForClass:classNameToCompress.
+	    filterCompletionBlock value: self valueOfFilter value.
+	    self autoSelectLast
+	]
     ]
 
 !
@@ -3105,11 +3104,11 @@
     |change selectionIndex|
 
     (change := self selectionOfChange value) notNil ifTrue:[
-        selectionIndex := self listOfChanges indexOf: change.
-        self unselectChange.
-        self silentDeleteChange:change.
-        self listOfChanges remove:change.
-        self autoSelectOrEnd: (self listOfChanges at: selectionIndex ifAbsent: [nil]).
+	selectionIndex := self listOfChanges indexOf: change.
+	self unselectChange.
+	self silentDeleteChange:change.
+	self listOfChanges remove:change.
+	self autoSelectOrEnd: (self listOfChanges at: selectionIndex ifAbsent: [nil]).
     ]
 !
 
@@ -3132,7 +3131,7 @@
     "deletes all changes having the same class like the selected one from the selected to the end"
 
     self withSelectedChangeDo:[:change|
-        self doDeleteForClassToEndFrom: (self listOfChanges indexOf: change)
+	self doDeleteForClassToEndFrom: (self listOfChanges indexOf: change)
     ]
 
 
@@ -3142,15 +3141,15 @@
     "deletes changes with same class like the selected one from start to end"
 
     self withSelectedChangeDo:[:change|
-        |classNameToDelete|
-        (classNameToDelete := self classNameOfChange:change) notNil ifTrue:[
-            self unselectChange.
-            self silentDeleteChangesFor:classNameToDelete 
-                                   from:start
-                                     to:self listOfChanges size.
-            self setChangeList.
-            self autoSelectOrEnd: nil
-        ]
+	|classNameToDelete|
+	(classNameToDelete := self classNameOfChange:change) notNil ifTrue:[
+	    self unselectChange.
+	    self silentDeleteChangesFor:classNameToDelete 
+				   from:start
+				     to:self listOfChanges size.
+	    self setChangeList.
+	    self autoSelectOrEnd: nil
+	]
     ].
 
 
@@ -3164,9 +3163,9 @@
 
     changeNr := (self listOfChanges indexOf: self selectionOfChange value).
     changeNr ~~ 0 ifTrue:[
-        self deleteChangesFrom:changeNr to: self listOfChanges size.
-        self unselectChange.
-        self autoSelectOrEnd: nil
+	self deleteChangesFrom:changeNr to: self listOfChanges size.
+	self unselectChange.
+	self autoSelectOrEnd: nil
     ]
 
 !
@@ -3209,29 +3208,29 @@
     self listOfChanges detect: [:change| change type = 'image'] ifNone: [^self warn: 'No snapshot found!!'].
 
     self withSelectedChangeDo:[:change|
-        snapshotNr := self listOfChanges indexOf: change.
-        snapshotFound := false.
-        [snapshotNr > 0 and: [snapshotFound not]] 
-        whileTrue: 
-        [
-            what = 'last'
-            ifTrue:
-            [
-                snapshotNr := snapshotNr - 1.
-                snapshotNr == 0 ifTrue: [snapshotNr := self listOfChanges size].   
-            ]
-            ifFalse:
-            [
-                snapshotNr := snapshotNr + 1.
-                snapshotNr > self listOfChanges size ifTrue: [snapshotNr := 1].
-            ].
-            (self listOfChanges at: snapshotNr ifAbsent: [^self autoSelectChange: (what = 'last' ifTrue: [self listOfChanges last] ifFalse: [self listOfChanges first])]) type = 'image'
-            ifTrue: 
-            [
-                snapshotFound := true.
-                self autoSelectChange:(self listOfChanges at: snapshotNr)
-            ]
-        ]
+	snapshotNr := self listOfChanges indexOf: change.
+	snapshotFound := false.
+	[snapshotNr > 0 and: [snapshotFound not]] 
+	whileTrue: 
+	[
+	    what = 'last'
+	    ifTrue:
+	    [
+		snapshotNr := snapshotNr - 1.
+		snapshotNr == 0 ifTrue: [snapshotNr := self listOfChanges size].   
+	    ]
+	    ifFalse:
+	    [
+		snapshotNr := snapshotNr + 1.
+		snapshotNr > self listOfChanges size ifTrue: [snapshotNr := 1].
+	    ].
+	    (self listOfChanges at: snapshotNr ifAbsent: [^self autoSelectChange: (what = 'last' ifTrue: [self listOfChanges last] ifFalse: [self listOfChanges first])]) type = 'image'
+	    ifTrue: 
+	    [
+		snapshotFound := true.
+		self autoSelectChange:(self listOfChanges at: snapshotNr)
+	    ]
+	]
     ].
 
     ^snapshotFound
@@ -3242,19 +3241,19 @@
 
     |fileName|
     (fileName :=
-        (FileSelectionBrowser
-            request: 'Load Changes List'
-            fileName: changeFileName
-            withFileFilters: #('c*'))) notNil
+	(FileSelectionBrowser
+	    request: 'Load Changes List'
+	    fileName: changeFileName
+	    withFileFilters: #('c*'))) notNil
     ifTrue:
     [
-        changeFileName := fileName.
-        changes removeAll.
-        self readChangesFileInBackground:true.
-        self unselectChange.
-        Processor addTimedBlock:autoUpdateBlock afterSeconds:5.
-        self updateInfoLabel.
-        self autoSelectLast
+	changeFileName := fileName.
+	changes removeAll.
+	self readChangesFileInBackground:true.
+	self unselectChange.
+	Processor addTimedBlock:autoUpdateBlock afterSeconds:5.
+	self updateInfoLabel.
+	self autoSelectLast
     ]
 !
 
@@ -3282,10 +3281,10 @@
     self valueOfNotReading value ifFalse: [^nil].
 
     editingClassSource ifTrue:[
-        (self confirm:'You are editing a classes sourceFile (not a changeFile) !!\Are you certain, you want to overwrite it ?' withCRs)
-        ifFalse:[
-            ^ false
-        ]
+	(self confirm:'You are editing a classes sourceFile (not a changeFile) !!\Are you certain, you want to overwrite it ?' withCRs)
+	ifFalse:[
+	    ^ false
+	]
     ].
 
     tempfile := Filename newTemporaryIn:nil.
@@ -3293,83 +3292,83 @@
 
     outStream := tempfile writeStream.
     outStream isNil ifTrue:[
-        self warn:'Cannot create temporary file in current directory.'.
-        ^ false
+	self warn:'Cannot create temporary file in current directory.'.
+	^ false
     ].
 
     inStream := FileStream readonlyFileNamed:changeFileName.
     inStream isNil ifTrue:[^ false].
 
     self withCursor:(Cursor write) do:[
-        |excla sawExcla done first chunk
-         nChanges "{Class:SmallInteger}" |
-
-        Stream writeErrorSignal handle:[:ex |
-            self warn:('Could not update the changes file.\\' , ex errorString) withCRs.
-            ^ false
-        ] do:[
-
-            self valueOfNotSaving value: false.
-
-            excla := inStream class chunkSeparator.
-            nChanges := changes size.
-
-            1 to:nChanges do:[:index |     
-                inStream position: (changes at: index) position.
-                sawExcla := inStream peekFor:excla.
-                chunk := inStream nextChunk.
-
-                (chunk notNil
-                and:[(chunk startsWith:'''---- snap') not]) ifTrue:[
-                    (stamp := (changes at:index) timeStamp) notNil ifTrue:[
-                        outStream nextPutAll:'''---- timestamp ' , stamp , ' ----'''.
-                        outStream nextPut:excla; cr.
-                    ].
-                ].
-
-                sawExcla ifTrue:[     
-                    outStream nextPut:excla.   
-                    outStream nextChunkPut:chunk.
-                    outStream cr; cr.
-
-                    "
-                     a method-definition chunk - skip followups
-                    "
-                    done := false.
-                    first := true.
-                    [done] whileFalse:[
-                        chunk := inStream nextChunk.
-                        chunk isNil ifTrue:[
-                            outStream cr; cr.
-                            done := true
-                        ] ifFalse:[
-                            chunk isEmpty ifTrue:[
-                                outStream space; nextChunkPut:chunk; cr; cr.
-                                done := true.
-                            ] ifFalse:[
-                                first ifFalse:[
-                                    outStream cr; cr.
-                                ].
-                                outStream nextChunkPut:chunk.
-                            ].
-                        ].
-                        first := false.
-                    ].
-                ] ifFalse:[
-                    outStream nextChunkPut:chunk.
-                    outStream cr
-                ]
-            ].
-            outStream close.
-            inStream close.
-        ].
-
-        f := changeFileName asFilename.
-        f renameTo:(f withSuffix:'bak').
-        tempfile renameTo:changeFileName.
-        self doReload.
-        modified := false.
-        self valueOfNotSaving value: true.
+	|excla sawExcla done first chunk
+	 nChanges "{Class:SmallInteger}" |
+
+	Stream writeErrorSignal handle:[:ex |
+	    self warn:('Could not update the changes file.\\' , ex errorString) withCRs.
+	    ^ false
+	] do:[
+
+	    self valueOfNotSaving value: false.
+
+	    excla := inStream class chunkSeparator.
+	    nChanges := changes size.
+
+	    1 to:nChanges do:[:index |     
+		inStream position: (changes at: index) position.
+		sawExcla := inStream peekFor:excla.
+		chunk := inStream nextChunk.
+
+		(chunk notNil
+		and:[(chunk startsWith:'''---- snap') not]) ifTrue:[
+		    (stamp := (changes at:index) timeStamp) notNil ifTrue:[
+			outStream nextPutAll:'''---- timestamp ' , stamp , ' ----'''.
+			outStream nextPut:excla; cr.
+		    ].
+		].
+
+		sawExcla ifTrue:[     
+		    outStream nextPut:excla.   
+		    outStream nextChunkPut:chunk.
+		    outStream cr; cr.
+
+		    "
+		     a method-definition chunk - skip followups
+		    "
+		    done := false.
+		    first := true.
+		    [done] whileFalse:[
+			chunk := inStream nextChunk.
+			chunk isNil ifTrue:[
+			    outStream cr; cr.
+			    done := true
+			] ifFalse:[
+			    chunk isEmpty ifTrue:[
+				outStream space; nextChunkPut:chunk; cr; cr.
+				done := true.
+			    ] ifFalse:[
+				first ifFalse:[
+				    outStream cr; cr.
+				].
+				outStream nextChunkPut:chunk.
+			    ].
+			].
+			first := false.
+		    ].
+		] ifFalse:[
+		    outStream nextChunkPut:chunk.
+		    outStream cr
+		]
+	    ].
+	    outStream close.
+	    inStream close.
+	].
+
+	f := changeFileName asFilename.
+	f renameTo:(f withSuffix:'bak').
+	tempfile renameTo:changeFileName.
+	self doReload.
+	modified := false.
+	self valueOfNotSaving value: true.
     ].
     ^ true
 
@@ -3414,16 +3413,16 @@
     delta size = 0 ifTrue: [^''].
     delta = '='    ifTrue: [^'Current'].
     delta = '?'    ifTrue: [
-        (className notNil and:[className knownAsSymbol]) ifTrue:[
-            (cls := Smalltalk at:className asSymbol ifAbsent:nil) notNil ifTrue:[
-                cls isBehavior ifTrue:[
-                    cls isLoaded ifFalse:[
-                        ^ 'Not loaded'
-                    ]
-                ]
-            ]
-        ].
-        ^'No class'
+	(className notNil and:[className knownAsSymbol]) ifTrue:[
+	    (cls := Smalltalk at:className asSymbol ifAbsent:nil) notNil ifTrue:[
+		cls isBehavior ifTrue:[
+		    cls isLoaded ifFalse:[
+			^ 'Not loaded'
+		    ]
+		]
+	    ]
+	].
+	^'No class'
     ].
     delta = '-'    ifTrue: [^'Remove'].
     delta = '+'    ifTrue: [^'New'].
@@ -3456,8 +3455,8 @@
 
     (string at: 3) ~~ $- ifTrue: 
     [
-        (self type = 'class') ifTrue: [^Color gray].
-        ^Color white
+	(self type = 'class') ifTrue: [^Color gray].
+	^Color white
     ].
 
     (string includesMatchString: '---- s') ifTrue: [^Color red].
@@ -3518,5 +3517,5 @@
 !NewChangesBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/NewChangesBrowser.st,v 1.23 1998-10-17 13:25:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/NewChangesBrowser.st,v 1.24 1999-07-10 10:43:40 cg Exp $'
 ! !