[squeak-smalltalk/squeak-object-memory] DoItFirst `--filein` cannot compile new methods because SourceFiles are not yet opened (Issue #165)
Christoph Thiede via Squeak-dev <[email protected]> Sun, 02 Aug 2026 13:08:14 -0700
| Newsgroups | gmane.comp.lang.smalltalk.squeak.general |
|---|---|
| Message-ID | <squeak-smalltalk/squeak-object-memory/issues/[email protected]> |
--===============5604241821795412746== Content-Type: multipart/alternative; boundary="--==_mimepart_6a6fa3aed53fc_f61160800075b"; charset=UTF-8 Content-Transfer-Encoding: 7bit ----==_mimepart_6a6fa3aed53fc_f61160800075b Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit LinqLover created an issue (squeak-smalltalk/squeak-object-memory#165) Hi Dave, all, consider this example: ```bash $ squeak squeak/FreshTrunk-tmp-DoItFirst-troubleshootable.image --filein ~/squeak/SpaceTallyTest.st file in /home/christoph/squeak/SpaceTallyTest.st vvvvvvvvvvvvvvvvvv MessageNotUnderstood: UndefinedObject>>position vvvvvvvvvvvvvvvvvv The time is 2026-08-02T22:00:34.203288+02:00 UndefinedObject(Object)>>doesNotUnderstand: #position CompiledMethodTrailer class>>sourcePointerInFile: SpaceTallyTest class(Behavior)>>defaultMethodTrailerIfLogSource: SpaceTallyTest class(ClassDescription)>>compileCue:classified:withStamp:logSource: SpaceTallyTest class(ClassDescription)>>compile:environment:classified:withStamp:notifying:logSource: SpaceTallyTest class(ClassDescription)>>compile:classified:withStamp:notifying:logSource: SpaceTallyTest class(ClassDescription)>>compile:classified:withStamp:notifying: ClassCategoryReader>>scanFrom: [] in [] in [] in MultiByteFileStream(PositionableStream)>>fileInFor:announcing: FullBlockClosure(BlockClosure)>>on:do: [] in [] in MultiByteFileStream(PositionableStream)>>fileInFor:announcing: FullBlockClosure(BlockClosure)>>on:do: [] in MultiByteFileStream(PositionableStream)>>fileInFor:announcing: [] in [] in MorphicUIManager>>displayProgress:at:from:to:during: FullBlockClosure(BlockClosure)>>on:do: [] in MorphicUIManager>>displayProgress:at:from:to:during: FullBlockClosure(BlockClosure)>>ensure: MorphicUIManager>>displayProgress:at:from:to:during: ProgressInitiationException>>defaultResumeValue ProgressInitiationException(Exception)>>resume ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: ProgressInitiationException(Exception)>>signal ProgressInitiationException>>display:at:from:to:during: ProgressInitiationException class>>display:at:from:to:during: ByteString(String)>>displayProgressAt:from:to:during: ByteString(String)>>displayProgressFrom:to:during: MultiByteFileStream(PositionableStream)>>fileInFor:announcing: MultiByteFileStream(PositionableStream)>>fileInAnnouncing: MultiByteFileStream(FileStream)>>fileIn MultiByteFileStream>>fileIn [] in [] in DoItFirst>>fileIn: FullBlockClosure(BlockClosure)>>on:do: [] in DoItFirst>>fileIn: OrderedCollection>>do: DoItFirst>>fileIn: [] in DoItFirst>>parse: DoItFirst>>evaluateArgs DoItFirst class>>startUp: [] in SmalltalkImage>>send:toClassesNamedIn:with: OrderedCollection>>do: SmalltalkImage>>send:toClassesNamedIn:with: SmalltalkImage>>processStartUpList: SmalltalkImage>>startUpPostSnapshot: SmalltalkImage>>snapshot:andQuit:withExitCode:embedded: SmalltalkImage>>snapshot:andQuit:embedded: SmalltalkImage>>snapshot:andQuit: SmalltalkImage>>saveImageInFileNamed: SmalltalkImage>>saveAs: SmalltalkImage>>saveAs TheWorldMainDockingBar>>saveImageAs [] in MenuItemMorph>>invokeWithEvent: FullBlockClosure(BlockClosure)>>ensure: CursorWithMask(Cursor)>>showWhile: MenuItemMorph>>invokeWithEvent: MenuItemMorph>>mouseUp: MenuItemMorph>>handleMouseUp: MouseButtonEvent>>sentTo: MenuItemMorph(Morph)>>handleEvent: MorphicEventDispatcher>>dispatchEvent:withHandler:withMorph: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: MenuItemMorph(Morph)>>processEvent:using: MenuItemMorph(Morph)>>processEvent: [] in MorphicEventDispatcher>>dispatchEvent:toSubmorphsOf: Array(SequenceableCollection)>>do: DockingBarMenuMorph(Morph)>>submorphsDo: TableLayout(LayoutPolicy)>>submorphsOf:do: MorphicEventDispatcher>>dispatchEvent:toSubmorphsOf: MorphicEventDispatcher>>dispatchEvent:withHandler:withMorph: MorphicEventDispatcher>>dispatchDefault:with: MorphicEventDispatcher>>dispatchEvent:with: DockingBarMenuMorph(Morph)>>processEvent:using: MorphicEventDispatcher>>doProcessingForFocusEvent:with: MorphicEventDispatcher>>dispatchFocusEventFully:with: DockingBarMenuMorph(MenuMorph)>>processFocusEvent:using: DockingBarMenuMorph(Morph)>>processFocusEvent: [] in [] in [] in HandMorph>>sendFocusEvent:to:clear: [] in ActiveEventVariable class(DynamicVariable class)>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveEventVariable class(DynamicVariable class)>>value:during: [] in ActiveEventVariable class>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveEventVariable class>>value:during: MouseButtonEvent(MorphicEvent)>>becomeActiveDuring: [] in [] in HandMorph>>sendFocusEvent:to:clear: [] in ActiveHandVariable class(DynamicVariable class)>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveHandVariable class(DynamicVariable class)>>value:during: [] in ActiveHandVariable class>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveHandVariable class>>value:during: HandMorph>>becomeActiveDuring: [] in HandMorph>>sendFocusEvent:to:clear: [] in ActiveWorldVariable class(DynamicVariable class)>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveWorldVariable class(DynamicVariable class)>>value:during: [] in ActiveWorldVariable class>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveWorldVariable class>>value:during: ^^^^^^^^^^^^^^^^^^ MessageNotUnderstood: UndefinedObject>>position ^^^^^^^^^^^^^^^^^^ ``` (The detailed stacktrace is due to System-ct.1530 (inbox), otherwise you would only see `MessageNotUnderstood: UndefinedObject>>position`.) The cause of this issue seems to be that `CompiledMethodTrailer class>>#sourcePointerInFile:` attempts to read a source file while compiling a method, but the source files have not been opened at this point. Should `DoItFirst>>#parse:` thus do a full `FileDirectory startUp` maybe? But that method seems not idempotent? Were you having any other precautions in mind when you wrote this? :-) -- Reply to this email directly or view it on GitHub: https://github.com/squeak-smalltalk/squeak-object-memory/issues/165 You are receiving this because you are subscribed to this thread. Message ID: <squeak-smalltalk/squeak-object-memory/issues/[email protected]> ----==_mimepart_6a6fa3aed53fc_f61160800075b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div style=3D"display: flex; flex-wrap: wrap; white-space: pre-wrap; alig= n-items: center; "><img height=3D"20" width=3D"20" style=3D"border-radius= :50%; margin-right: 4px;" decoding=3D"async" src=3D"https://avatars.githu= busercontent.com/u/38782922?s=3D20&v=3D4" /><strong>LinqLover</strong= > created an issue <a href=3D"https://github.com/squeak-smalltalk/squeak-= object-memory/issues/165">(squeak-smalltalk/squeak-object-memory#165)</a>= </div> <p dir=3D"auto">Hi Dave, all,</p> <p dir=3D"auto">consider this example:</p> <div class=3D"highlight highlight-source-shell" dir=3D"auto"><pre class=3D= "notranslate">$ squeak squeak/FreshTrunk-tmp-DoItFirst-troubleshootable.i= mage --filein <span class=3D"pl-k">~</span>/squeak/SpaceTallyTest.st file <span class=3D"pl-k">in</span> /home/christoph/squeak/SpaceTallyTest= .st vvvvvvvvvvvvvvvvvv MessageNotUnderstood: UndefinedObject<span class=3D"pl= -k">>></span>position vvvvvvvvvvvvvvvvvv The <span class=3D"pl-k">time</span> is 2026-08-02T22:00:34.203288+02:00 UndefinedObject(Object)<span class=3D"pl-k">>></span>doesNotUnderst= and: <span class=3D"pl-c"><span class=3D"pl-c">#</span>position</span> CompiledMethodTrailer class<span class=3D"pl-k">>></span>sourcePoin= terInFile: SpaceTallyTest class(Behavior)<span class=3D"pl-k">>></span>default= MethodTrailerIfLogSource: SpaceTallyTest class(ClassDescription)<span class=3D"pl-k">>></span= >compileCue:classified:withStamp:logSource: SpaceTallyTest class(ClassDescription)<span class=3D"pl-k">>></span= >compile:environment:classified:withStamp:notifying:logSource: SpaceTallyTest class(ClassDescription)<span class=3D"pl-k">>></span= >compile:classified:withStamp:notifying:logSource: SpaceTallyTest class(ClassDescription)<span class=3D"pl-k">>></span= >compile:classified:withStamp:notifying: ClassCategoryReader<span class=3D"pl-k">>></span>scanFrom: [] <span class=3D"pl-k">in</span> [] <span class=3D"pl-k">in</span> [] <s= pan class=3D"pl-k">in</span> MultiByteFileStream(PositionableStream)<span= class=3D"pl-k">>></span>fileInFor:announcing: FullBlockClosure(BlockClosure)<span class=3D"pl-k">>></span>on:do: [] <span class=3D"pl-k">in</span> [] <span class=3D"pl-k">in</span> Multi= ByteFileStream(PositionableStream)<span class=3D"pl-k">>></span>fil= eInFor:announcing: FullBlockClosure(BlockClosure)<span class=3D"pl-k">>></span>on:do: [] <span class=3D"pl-k">in</span> MultiByteFileStream(PositionableStream)= <span class=3D"pl-k">>></span>fileInFor:announcing: [] <span class=3D"pl-k">in</span> [] <span class=3D"pl-k">in</span> Morph= icUIManager<span class=3D"pl-k">>></span>displayProgress:at:from:to= :during: FullBlockClosure(BlockClosure)<span class=3D"pl-k">>></span>on:do: [] <span class=3D"pl-k">in</span> MorphicUIManager<span class=3D"pl-k">&g= t;></span>displayProgress:at:from:to:during: FullBlockClosure(BlockClosure)<span class=3D"pl-k">>></span>ensure:= MorphicUIManager<span class=3D"pl-k">>></span>displayProgress:at:fr= om:to:during: ProgressInitiationException<span class=3D"pl-k">>></span>defaultRes= umeValue ProgressInitiationException(Exception)<span class=3D"pl-k">>></span= >resume ProgressInitiationException<span class=3D"pl-k">>></span>defaultAct= ion UndefinedObject<span class=3D"pl-k">>></span>handleSignal: ProgressInitiationException(Exception)<span class=3D"pl-k">>></span= >signal ProgressInitiationException<span class=3D"pl-k">>></span>display:at= :from:to:during: ProgressInitiationException class<span class=3D"pl-k">>></span>disp= lay:at:from:to:during: ByteString(String)<span class=3D"pl-k">>></span>displayProgressAt:f= rom:to:during: ByteString(String)<span class=3D"pl-k">>></span>displayProgressFrom= :to:during: MultiByteFileStream(PositionableStream)<span class=3D"pl-k">>></spa= n>fileInFor:announcing: MultiByteFileStream(PositionableStream)<span class=3D"pl-k">>></spa= n>fileInAnnouncing: MultiByteFileStream(FileStream)<span class=3D"pl-k">>></span>fileIn= MultiByteFileStream<span class=3D"pl-k">>></span>fileIn [] <span class=3D"pl-k">in</span> [] <span class=3D"pl-k">in</span> DoItF= irst<span class=3D"pl-k">>></span>fileIn: FullBlockClosure(BlockClosure)<span class=3D"pl-k">>></span>on:do: [] <span class=3D"pl-k">in</span> DoItFirst<span class=3D"pl-k">>><= /span>fileIn: OrderedCollection<span class=3D"pl-k">>></span>do: DoItFirst<span class=3D"pl-k">>></span>fileIn: [] <span class=3D"pl-k">in</span> DoItFirst<span class=3D"pl-k">>><= /span>parse: DoItFirst<span class=3D"pl-k">>></span>evaluateArgs DoItFirst class<span class=3D"pl-k">>></span>startUp: [] <span class=3D"pl-k">in</span> SmalltalkImage<span class=3D"pl-k">>= ></span>send:toClassesNamedIn:with: OrderedCollection<span class=3D"pl-k">>></span>do: SmalltalkImage<span class=3D"pl-k">>></span>send:toClassesNamedIn:w= ith: SmalltalkImage<span class=3D"pl-k">>></span>processStartUpList: SmalltalkImage<span class=3D"pl-k">>></span>startUpPostSnapshot: SmalltalkImage<span class=3D"pl-k">>></span>snapshot:andQuit:withEx= itCode:embedded: SmalltalkImage<span class=3D"pl-k">>></span>snapshot:andQuit:embedd= ed: SmalltalkImage<span class=3D"pl-k">>></span>snapshot:andQuit: SmalltalkImage<span class=3D"pl-k">>></span>saveImageInFileNamed: SmalltalkImage<span class=3D"pl-k">>></span>saveAs: SmalltalkImage<span class=3D"pl-k">>></span>saveAs TheWorldMainDockingBar<span class=3D"pl-k">>></span>saveImageAs [] <span class=3D"pl-k">in</span> MenuItemMorph<span class=3D"pl-k">>&= gt;</span>invokeWithEvent: FullBlockClosure(BlockClosure)<span class=3D"pl-k">>></span>ensure:= CursorWithMask(Cursor)<span class=3D"pl-k">>></span>showWhile: MenuItemMorph<span class=3D"pl-k">>></span>invokeWithEvent: MenuItemMorph<span class=3D"pl-k">>></span>mouseUp: MenuItemMorph<span class=3D"pl-k">>></span>handleMouseUp: MouseButtonEvent<span class=3D"pl-k">>></span>sentTo: MenuItemMorph(Morph)<span class=3D"pl-k">>></span>handleEvent: MorphicEventDispatcher<span class=3D"pl-k">>></span>dispatchEvent:w= ithHandler:withMorph: MorphicEventDispatcher<span class=3D"pl-k">>></span>dispatchDefault= :with: MorphicEventDispatcher<span class=3D"pl-k">>></span>dispatchEvent:w= ith: MenuItemMorph(Morph)<span class=3D"pl-k">>></span>processEvent:usin= g: MenuItemMorph(Morph)<span class=3D"pl-k">>></span>processEvent: [] <span class=3D"pl-k">in</span> MorphicEventDispatcher<span class=3D"pl= -k">>></span>dispatchEvent:toSubmorphsOf: Array(SequenceableCollection)<span class=3D"pl-k">>></span>do: DockingBarMenuMorph(Morph)<span class=3D"pl-k">>></span>submorphsDo= : TableLayout(LayoutPolicy)<span class=3D"pl-k">>></span>submorphsOf:= do: MorphicEventDispatcher<span class=3D"pl-k">>></span>dispatchEvent:t= oSubmorphsOf: MorphicEventDispatcher<span class=3D"pl-k">>></span>dispatchEvent:w= ithHandler:withMorph: MorphicEventDispatcher<span class=3D"pl-k">>></span>dispatchDefault= :with: MorphicEventDispatcher<span class=3D"pl-k">>></span>dispatchEvent:w= ith: DockingBarMenuMorph(Morph)<span class=3D"pl-k">>></span>processEven= t:using: MorphicEventDispatcher<span class=3D"pl-k">>></span>doProcessingFor= FocusEvent:with: MorphicEventDispatcher<span class=3D"pl-k">>></span>dispatchFocusEv= entFully:with: DockingBarMenuMorph(MenuMorph)<span class=3D"pl-k">>></span>process= FocusEvent:using: DockingBarMenuMorph(Morph)<span class=3D"pl-k">>></span>processFocu= sEvent: [] <span class=3D"pl-k">in</span> [] <span class=3D"pl-k">in</span> [] <s= pan class=3D"pl-k">in</span> HandMorph<span class=3D"pl-k">>></span= >sendFocusEvent:to:clear: [] <span class=3D"pl-k">in</span> ActiveEventVariable class(DynamicVariab= le class)<span class=3D"pl-k">>></span>value:during: FullBlockClosure(BlockClosure)<span class=3D"pl-k">>></span>ensure:= ActiveEventVariable class(DynamicVariable class)<span class=3D"pl-k">>= ></span>value:during: [] <span class=3D"pl-k">in</span> ActiveEventVariable class<span class=3D= "pl-k">>></span>value:during: FullBlockClosure(BlockClosure)<span class=3D"pl-k">>></span>ensure:= ActiveEventVariable class<span class=3D"pl-k">>></span>value:during= : MouseButtonEvent(MorphicEvent)<span class=3D"pl-k">>></span>becomeA= ctiveDuring: [] <span class=3D"pl-k">in</span> [] <span class=3D"pl-k">in</span> HandM= orph<span class=3D"pl-k">>></span>sendFocusEvent:to:clear: [] <span class=3D"pl-k">in</span> ActiveHandVariable class(DynamicVariabl= e class)<span class=3D"pl-k">>></span>value:during: FullBlockClosure(BlockClosure)<span class=3D"pl-k">>></span>ensure:= ActiveHandVariable class(DynamicVariable class)<span class=3D"pl-k">>&= gt;</span>value:during: [] <span class=3D"pl-k">in</span> ActiveHandVariable class<span class=3D"= pl-k">>></span>value:during: FullBlockClosure(BlockClosure)<span class=3D"pl-k">>></span>ensure:= ActiveHandVariable class<span class=3D"pl-k">>></span>value:during:= HandMorph<span class=3D"pl-k">>></span>becomeActiveDuring: [] <span class=3D"pl-k">in</span> HandMorph<span class=3D"pl-k">>><= /span>sendFocusEvent:to:clear: [] <span class=3D"pl-k">in</span> ActiveWorldVariable class(DynamicVariab= le class)<span class=3D"pl-k">>></span>value:during: FullBlockClosure(BlockClosure)<span class=3D"pl-k">>></span>ensure:= ActiveWorldVariable class(DynamicVariable class)<span class=3D"pl-k">>= ></span>value:during: [] <span class=3D"pl-k">in</span> ActiveWorldVariable class<span class=3D= "pl-k">>></span>value:during: FullBlockClosure(BlockClosure)<span class=3D"pl-k">>></span>ensure:= ActiveWorldVariable class<span class=3D"pl-k">>></span>value:during= : ^^^^^^^^^^^^^^^^^^ MessageNotUnderstood: UndefinedObject<span class=3D"pl= -k">>></span>position ^^^^^^^^^^^^^^^^^^</pre></div> <p dir=3D"auto">(The detailed stacktrace is due to System-ct.1530 (inbox)= , otherwise you would only see <code class=3D"notranslate">MessageNotUnde= rstood: UndefinedObject>>position</code>.)</p> <p dir=3D"auto">The cause of this issue seems to be that <code class=3D"n= otranslate">CompiledMethodTrailer class>>#sourcePointerInFile:</cod= e> attempts to read a source file while compiling a method, but the sourc= e files have not been opened at this point.</p> <p dir=3D"auto">Should <code class=3D"notranslate">DoItFirst>>#pars= e:</code> thus do a full <code class=3D"notranslate">FileDirectory startU= p</code> maybe? But that method seems not idempotent? Were you having any= other precautions in mind when you wrote this? :-)</p> <p style=3D"font-size:small;-webkit-text-size-adjust:none;color:#666;">&m= dash;<br />Reply to this email directly, <a href=3D"https://github.com/sq= ueak-smalltalk/squeak-object-memory/issues/165?email_source=3Dnotificatio= ns&email_token=3DBFYAK6KSFEOIFUMU25ICTK35H6NS5A5CNFSL4Z3JMQ5C6L3HNF2C= 22DVMIXUS43TOVSS6NJQGQ2DENJUGA4DBJTSMVQXG33OVJZXKYTTMNZGSYTFMSSWK5TFNZ2KY= ZTPN52GK4S7MNWGSY3L">view it on GitHub</a>, or <a href=3D"https://github.= com/notifications/unsubscribe-auth/BFYAK6IBLKWLUWLZNAFIFHT5H6NS5AVCNFSNUA= BFKJSXA33TNF2G64TZHM2DKNBYHA3TANRUHNEXG43VMU5TKMBUGQZDKNBQHAYKC5QC">unsub= scribe</a>.<br />Triage notifications, keep track of coding agent tasks a= nd review pull requests on the go with GitHub Mobile for <a href=3D"https= ://github.com/notifications/mobile/ios/BFYAK6MUJVRMWRKOHTEYF2L5H6NS5A5CNF= SL4Z3JMQ5C6L3HNF2C22DVMIXUS43TOVSS6NJQGQ2DENJUGA4DBJTSMVQXG33OVJZXKYTTMNZ= GSYTFMSSWK5TFNZ2KUZTPN52GK4S7NFXXG">iOS</a> and <a href=3D"https://github= .com/notifications/mobile/android/BFYAK6IEZ4SBWPNCDCMF4NL5H6NS5A5CNFSL4Z3= JMQ5C6L3HNF2C22DVMIXUS43TOVSS6NJQGQ2DENJUGA4DBJTSMVQXG33OVJZXKYTTMNZGSYTF= MSSWK5TFNZ2K4ZTPN52GK4S7MFXGI4TPNFSA">Android</a>. Download it today! <br />You are receiving this because you are subscribed to this thread.<i= mg src=3D"https://github.com/notifications/beacon/BFYAK6LBGW6T7O7UJMYNBXD= 5H6NS5BFCNFSM6AAAAAC4XEXPZGWGG33NNVSW45C7OR4XAZNFJFZXG5LFVJRW63LNMVXHIX3J= MTHQAAAAAEWKSNMAUZZGKYLTN5XKU43VMJZWG4TJMJSWI.gif" height=3D"1" width=3D"= 1" alt=3D"" /><span style=3D"color: transparent; font-size: 0; display: n= one; visibility: hidden; overflow: hidden; opacity: 0; width: 0; height: = 0; max-width: 0; max-height: 0; mso-hide: all">Message ID: <span><sque= ak-smalltalk/squeak-object-memory/issues/165</span><span>@</span><span>gi= thub</span><span>.</span><span>com></span></span></p> <script type=3D"application/ld+json">[ { "@context": "http://schema.org", "@type": "EmailMessage", "potentialAction": { "@type": "ViewAction", "target": "https://github.com/squeak-smalltalk/squeak-object-memory/issue= s/165?email_source=3Dnotifications\u0026email_token=3DBFYAK6LMSCU6UDF5CWY= VM2T5H6NS5A5CNFSL4Z3JMQ5C6L3HNF2C22DVMIXUS43TOVSS6NJQGQ2DENJUGA4DBJTSMVQX= G33OVJZXKYTTMNZGSYTFMSSWK5TFNZ2KWZ3NMFUWYX3DNRUWG2Y", "url": "https://github.com/squeak-smalltalk/squeak-object-memory/issues/1= 65?email_source=3Dnotifications\u0026email_token=3DBFYAK6LMSCU6UDF5CWYVM2= T5H6NS5A5CNFSL4Z3JMQ5C6L3HNF2C22DVMIXUS43TOVSS6NJQGQ2DENJUGA4DBJTSMVQXG33= OVJZXKYTTMNZGSYTFMSSWK5TFNZ2KWZ3NMFUWYX3DNRUWG2Y", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { "@type": "Organization", "name": "GitHub", "url": "https://github.com" } } ]</script> ----==_mimepart_6a6fa3aed53fc_f61160800075b-- --===============5604241821795412746== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline Squeak-dev mailing list -- [email protected] To unsubscribe send an email to [email protected] --===============5604241821795412746==--