Hi All,<div><br></div><div>    I&#39;m profiling image startup and consequently want to pause a MessageTally during a snapshot.  So I want to add MessageTally to the StartUpList immediately after Delay (the first entry in StartUpList) and to the ShutDownList immediately before Delay.  But when I look at the SmalltalkImage accessor I see some confusion:</div>
<div> <br clear="all"><div>SmalltalkImage&gt;add: aClass toList: startUpOrShutDownList after: predecessor</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&quot;Add the name of aClass to the startUp or shutDown list.</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>Add it after the name of predecessor, or at the end if predecessor is nil.&quot;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>| name earlierName |</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>name := aClass name.</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>(self at: name ifAbsent: [nil]) == aClass ifFalse:</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>[self error: name , &#39; cannot be found in Smalltalk dictionary.&#39;].</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>predecessor == nil</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>ifTrue: [&quot;No-op if alredy in the list.&quot;</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>(startUpOrShutDownList includes: name) ifFalse:</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>[startUpOrShutDownList == StartUpList</div><div><span class="Apple-tab-span" style="white-space:pre">                                                </span>ifTrue: [&quot;Add to end of startUp list&quot;</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                                                </span>startUpOrShutDownList addLast: name]</div><div><span class="Apple-tab-span" style="white-space:pre">                                                </span>ifFalse: [&quot;Add to front of shutDown list&quot;</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                                                </span>startUpOrShutDownList addFirst: name]]]</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>ifFalse: [&quot;Add after predecessor, moving it if already there.&quot;</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>earlierName := predecessor name.</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>(self at: earlierName) == predecessor ifFalse:</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>[self error: earlierName , &#39; cannot be found in Smalltalk dictionary.&#39;].</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>(startUpOrShutDownList includes: earlierName) ifFalse:</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>[self error: earlierName , &#39; cannot be found in the list.&#39;].</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>startUpOrShutDownList remove: name ifAbsent:[].</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>startUpOrShutDownList add: name after: earlierName]</div><div><br></div><div>In the predecessor == nil arm adding to the StartUpList adds at the end and adding to the ShutDownList adds at the beginning, which makes sense, at least to me.  But if predecessor is not nil then adding to either adds after.  The asymmetry is troubling.  I guess in the name of stability the only way to solve this is to add an explicit add:toList:before: and sugar (add:toStartUpListBefore: add:toShutDownListBefore:).  So what&#39;s the rationale for the asymmetry, or is it an unintentional mistake?</div>
-- <br>best,<div>Eliot</div><br>
</div>