{"id":14,"date":"2008-11-14T15:41:52","date_gmt":"2008-11-14T22:41:52","guid":{"rendered":"http:\/\/www.mirandabanda.org\/cogblog\/?p=14"},"modified":"2008-11-16T18:41:18","modified_gmt":"2008-11-17T01:41:18","slug":"mechanised-modifications-and-miscellaneous-measurements","status":"publish","type":"post","link":"http:\/\/www.mirandabanda.org\/cogblog\/2008\/11\/14\/mechanised-modifications-and-miscellaneous-measurements\/","title":{"rendered":"Mechanised Modifications and Miscellaneous Measurements"},"content":{"rendered":"<p>You read the last post and I can tell you&#8217;re unhappy with the size of the remote temp bytecodes. I can hear you grumbling that it has got to hurt performance.  &quot;But these bytecodes are really rare in practice&quot; I claim.  &quot;Prove it&quot;, you say. &quot;I took a look and there are loads of the damn things&quot;, you say, and of course you&#8217;re right.<\/p>\n<p>Let&#8217;s measure how often these crop up in practice.  I&#8217;m running these doits in a freshly bootstrapped Croquet 1.0.18 image.  You can evaluate these in your own bootstrap image if you&#8217;re so inclined.<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompiledMethod instanceCount 67650<\/p>\n<p>OK, so we have quite a few methods.  Since the compiler arranges that the first bytecode will be a pushNewArray opcode if there are remote temps in a method we can scan for these quite quickly.  Note that this approach won&#8217;t find temporaries declared inside a block that are only accessed within nested blocks, but it is good enough.  We can save complicatons by filtering out quick methods which return self, an instance variable nil, true or false as these don&#8217;t have bytecodes.  We also need to filter out the use of pushNewArray for creating tuples.  These have the sign bit set on the following byte, which is the number of elements in the array.<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SystemNavigation default allSelect:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:m|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m isQuick not<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [(m at: m initialPC) = 138<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [(m at: m initialPC + 1) &lt;= 127]]]) size 2428<\/p>\n<p>OK, so fully 2428 \/ 67650 asFloat =  0.03589061345158906, or 3.6% of methods contain remote temps.  Argh!  What&#8217;s going on?<\/p>\n<p>Well remember that the bootstrap has just been run in a system that up until now used BlueBook blocks where all temporaries are at method level and are accessed indirectly from within blocks.  So up until now there has been little incentive to declare block-local temps at block-level scope.  They end up being declared (and decompiled and pretty-printed) at method level anyway.  Of course there is a case where a method-level temporary is purposefully used only at block level, when it is read before written.  These shouldn&#8217;t be changed.  Take for example the following method; I&#8217;m using &#8225; to draw your attention to relevant detail. <\/p>\n<p><i>Collection methods for enumerating<\/i><br \/>\n<b>detectMax:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlock<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Evaluate aBlock with each of the receiver&#8217;s elements as the argument.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer the element for which aBlock evaluates to the highest magnitude.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If collection empty, return nil.  This method might also be called elect:.&quot;<\/font><font color=\"#000000\"><\/p>\n<p>\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maxElement<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">val<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> [:<\/font><font color=\"#00007F\">each<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">==<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">nil<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#3F3F3F\">val<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">value:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">each<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxElement<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">each<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">val<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#007F7F\">&quot;first element&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxElement<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">each<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">value:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">each<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Note that there is no way to get the first element that works<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for all kinds of Collections.  Must test every one.&quot;<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maxElement<\/font><font color=\"#000000\"><\/p>\n<p>We can change this by moving val to block-level scope to<\/font><br \/>\n<b>detectMax:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlock<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Evaluate aBlock with each of the receiver&#8217;s elements as the argument.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer the element for which aBlock evaluates to the highest magnitude.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If collection empty, return nil.  This method might also be called elect:.&quot;<\/font><font color=\"#000000\"><\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maxElement<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> [:<\/font><font color=\"#00007F\">each<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">val<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">==<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">nil<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#3F3F3F\">val<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">value:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">each<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxElement<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">each<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">val<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#007F7F\">&quot;first element&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxElement<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">each<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">value:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">each<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Note that there is no way to get the first element that works<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for all kinds of Collections.  Must test every one.&quot;<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maxElement<br \/>\n<\/font><br \/>\nbut we would break it if we changed it to<\/p>\n<p><b>detectMax:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlock<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Evaluate aBlock with each of the receiver&#8217;s elements as the argument.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer the element for which aBlock evaluates to the highest magnitude.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If collection empty, return nil.  This method might also be called elect:.&quot;<\/font><font color=\"#000000\"><\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maxElement<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> [:<\/font><font color=\"#00007F\">each<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">val<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">==<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">nil<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#3F3F3F\">val<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">value:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">each<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxElement<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">each<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">val<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#007F7F\">&quot;first element&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxElement<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">each<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maxValue<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">value:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">each<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Note that there is no way to get the first element that works<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for all kinds of Collections.  Must test every one.&quot;<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maxElement<\/font><font color=\"#000000\"><br \/>\nbecause maxValue would be nil on every iteration of the loop.<\/font><font color=\"#000000\">  With this in mind let&#8217;s try and look closer and try and identify which temporaries are declared at method level but only used at block level.<\/p>\n<p>Review the previous post on the Closure Compiler and its closure analysis.  TempVariableNodes have readingScopes and writingScopes instance variables tracking their references.  We can detect temporaries that are declared at method level but have no reads or writes at method level.  We need to parse methods, perform the closure analysis and then examine the remote temps.  We can save time by using the filter above to only parse methods that have remote temps:<br \/>\n<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SystemNavigation default allSelect:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:m|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m isQuick not<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [(m at: m initialPC) = 138<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [(m at: m initialPC + 1) &lt;= 127<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [| methodNode |<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodNode := m methodClass parserClass new<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parse: m getSourceFromFile<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class: m methodClass.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodNode ensureClosureAnalysisDone.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(methodNode instVarNamed: &#8216;temporaries&#8217;) last remoteTemps anySatisfy:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:t|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((t instVarNamed: &#8216;readingScopes&#8217;)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifNil: [true]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifNotNil: [:rs| (rs includesKey: methodNode block) not])<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [(t instVarNamed: &#8216;writingScopes&#8217;)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifNil: [true]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifNotNil: [:ws| (ws includesKey: methodNode block) not]]]]]]]) size<\/p>\n<p>1507.  A quiet year.  The Aztec New Fire ceremony is held for the last time.  da Vinvi completes the Mona Lisa.  But no major conflicts.  1507 is apparently 7015 to 7016 in the Byzantine calendar.  Don&#8217;t you just <i>love<\/i> <a href=\"http:\/\/en.wikipedia.org\/wiki\/1507\">Wikipedia<\/a>?  Not much seems to have happened for sure in 1507 BC, although we have apparently discovered the first remains of domesticated ferrets here abouts.  Now where were we?  Ah yes&#8230;<\/p>\n<p>So in fact only 2428 &#8211; 1507 = 921, or 921 \/ 67650.0 = 1.4% have an apparently legitimate need for remote temps.  But that leaves at least 1507 methods that need editing to eliminate the unnecessary and bloated bytecodes.  That&#8217;s a lot of editing.  Sigh.<\/p>\n<p>Perhaps we can fix this automatically.  We can already find the temps that need moving.  Now we have to find where to move them to.  How many methods are there that contain exactly one block?  These should be easy to fix.<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SystemNavigation default allSelect:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:m|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m isQuick not<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [(m at: m initialPC) = 138<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [(m at: m initialPC + 1) &lt;= 127<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [ | numBlocks |<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numBlocks := 0.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(InstructionStream on: m) scanFor:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:b|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b = 143 ifTrue: [numBlocks := numBlocks + 1].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numBlocks &gt; 1].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numBlocks = 1<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [| methodNode |<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodNode := m methodClass parserClass new<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parse: m getSourceFromFile<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class: m methodClass.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodNode ensureClosureAnalysisDone.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(methodNode instVarNamed: &#8216;temporaries&#8217;) last remoteTemps anySatisfy:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:t|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((t instVarNamed: &#8216;readingScopes&#8217;)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifNil: [true]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifNotNil: [:rs| (rs includesKey: methodNode block) not])<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [(t instVarNamed: &#8216;writingScopes&#8217;)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifNil: [true]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifNotNil: [:ws| (ws includesKey: methodNode block) not]]]]]]]]) size<\/p>\n<p>645.  That&#8217;s 43%.  Nearly half.  This seems worth-while to me.  What do we need to do?  For the methods in question we have to find the set of method-level temp names that are only accessed remotely, edit them out of the method level declaration and add them to a block-level declaration.  This is going to be complicated enough that we should probably use a class or two instead of doits.  Besides I find syntax highlighting really helps.  Let&#8217;s put a halt where the action begins and we can root around to make sense of things.<\/p>\n<p><font color=\"#000000\">Object <\/font><font color=\"#00007F\">subclass:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">#TempScopeEditor<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">instanceVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">classVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">poolDictionaries:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">category:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;Cog-Scripts&#8217;<\/font><\/font><\/p>\n<p><font color=\"#000000\"><i>TempScopeEditor methods for source editing<\/i><\/font><br \/>\n<b>fixBlockLocalTempsInSingleBlockMethods<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Move temporaries declared at method level but used only at block<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; level to block level scope in methods that only contan one block<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (because this should be easier than dealing with multiple block cases).&quot;<\/font><font color=\"#000000\"><\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">candidateMethodsSuchThat:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">m<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">InstructionStream <\/font><font color=\"#00007F\">on:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scanFor:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">b<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">b<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">143<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">source<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">select:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;readingScopes&#8217;<\/font><\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[true]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">rs<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">rs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;writingScopes&#8217;<\/font><\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[true]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">ws<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">ws<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">accept:<\/font><font color=\"#000000\"> BlockNodeCollectingVisitor <\/font><font color=\"#00007F\">new<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">halt<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">]<\/font><\/p>\n<p>We&#8217;ll adapt the script above to invoke the important block with some of the extra work already done:<\/p>\n<p><font color=\"#000000\"><i>TempScopeEditor methods for accessing<br \/>\n<\/i><\/font><b>candidateMethodsSuchThat:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodSelectBlock<\/font><font color=\"#000000\"> <\/font><b>do:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">quadBlock<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Evaluate quadBlock with the source, class, methodNode and<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remoteTemporaries of all method that contain method-level<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remote temporaries for which methodSelectBlock answers true.&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemNavigation <\/font><font color=\"#00007F\">default<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">allSelect:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">m<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#00007F\">m<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isQuick<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">m<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">at:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">initialPC<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">138<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">m<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">at:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">initialPC<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&lt;=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">127<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">[<\/font><font color=\"#EA8C00\">(<\/font><font color=\"#00007F\">methodSelectBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">value:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#EA8C00\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#EA8C00\">[<\/font><font color=\"#7F7F7F\">methodNode<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">parserClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">parse:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">getSourceFromFile<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">class:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodClass<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ensureClosureAnalysisDone<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#EA00EA\">(<\/font><font color=\"#7F7F7F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;temporaries&#8217;<\/font><\/font><font color=\"#EA00EA\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">anySatisfy:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#EA00EA\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000FF\">(<\/font><font color=\"#007F00\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;readingScopes&#8217;<\/font><\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#7F0000\">true<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">rs<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">rs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#007F00\">]<\/font><font color=\"#0000FF\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#0000FF\">[<\/font><font color=\"#007F00\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;writingScopes&#8217;<\/font><\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#7F0000\">true<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">ws<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">ws<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#007F00\">]<\/font><font color=\"#0000FF\">]<\/font><font color=\"#EA00EA\">]<\/font><font color=\"#EA8C00\">]<\/font><font color=\"#00EA00\">]<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">quadBlock<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">value:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">getSourceFromFile<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">asString<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">value:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodClass<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">value:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">methodNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">value:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">remoteTemps<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">false<\/font><font color=\"#000000\">]<\/p>\n<p>And we need a visitor to fish the block node out of the parse tree:<\/p>\n<p>ParseNodeVisitor <\/font><font color=\"#00007F\">subclass:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">#BlockNodeCollectingVisitor<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">instanceVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;blockNodes&#8217;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">classVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">poolDictionaries:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">category:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;Cog-Scripts&#8217;<\/font><\/font><font color=\"#000000\"><\/p>\n<p><\/font><font color=\"#000000\"><i>BlockNodeCollectingVisitor methods for accessing<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>blockNodes<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">blockNodes<\/p>\n<p><\/font><font color=\"#000000\"><i>BlockNodeCollectingVisitor methods for visiting<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>visitBlockNode:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlockNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(blockNodes <\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">blockNodes <\/font><b>:=<\/b><font color=\"#000000\"> OrderedCollection <\/font><font color=\"#00007F\">new<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">addLast:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlockNode<\/font><font color=\"#000000\"> <\/p>\n<p>My first mistake is in assuming the last block will be the block I&#8217;m interested in.  But the visitor finds all blocks, including optimized ones that will be inlined (as in ifTrue: [a block the compiler inlines]):<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F007F\">(<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">accept:<\/font><font color=\"#000000\"> BlockNodeCollectingVisitor <\/font><font color=\"#00007F\">new<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">blockNodes<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">reject:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">bn<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">bn<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">optimized<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\">.<\/p>\n<p>Better.  Now let&#8217;s get the start of the block from its source range, the same source range the debugger uses to high-light methods while debugging:<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceRangeFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">first<\/font><font color=\"#000000\">.<\/p>\n<p>Let&#8217;s evaluate<br \/>\n<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TempScopeEditor new fixBlockLocalTempsInSingleBlockMethods<\/p>\n<p>amd root around at the halt.  I want to evaluate<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source copyFrom: 1 to: startOfBlock<\/p>\n<p>in the debugger to see what&#8217;s what.  And&#8230;  <em><strong>Bang!<\/strong><\/em>  We&#8217;re now two days into the future (with little progress having been made).  Since this is <a href=\"http:\/\/en.wikipedia.org\/wiki\/Cinema_verite\">Cin&eacute;ma v&eacute;rit&eacute;<\/a> I need to relate what happened. The VM crashed hard as soon as I evaluated <i>source copyFrom: 1 to: startOfBlock<\/i>.  I spent two days trying to track down what I thought was a VM bug but was of course my own fault.  My original version of the method in BytecodeEncoder to compute the size of a bytecode looked like this:<\/p>\n<p><i>BytecodeEncoder methods for opcode sizing<\/i><br \/>\n<b>sizeOpcodeSelector:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">selector<\/font><font color=\"#000000\"> <\/font><b>withArguments:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">args<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">start<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream <\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> [stream <\/font><b>:=<\/b><font color=\"#000000\"> WriteStream <\/font><font color=\"#00007F\">on:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">ByteArray <\/font><font color=\"#00007F\">new:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">64<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">start<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> stream <\/font><font color=\"#00007F\">position<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">[<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">perform:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">selector<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">withArguments:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">args<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   stream <\/font><font color=\"#00007F\">position<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">start<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ensure:<\/font><font color=\"#000000\"> [stream <\/font><font color=\"#00007F\">position:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">start<\/font><font color=\"#000000\">]<\/p>\n<p>Later on I realized that the ensure: served little purpose.  If there was an error while generating the code the compilation was useless and restoring the stream position pointless.  What was important was to see the error and correct it.  So I modified the method to<\/p>\n<p><\/font><b>sizeOpcodeSelector:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">selector<\/font><font color=\"#000000\"> <\/font><b>withArguments:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">args<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">start<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">result<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream <\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> [stream <\/font><b>:=<\/b><font color=\"#000000\"> WriteStream <\/font><font color=\"#00007F\">on:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">ByteArray <\/font><font color=\"#00007F\">new:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">64<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">start<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> stream <\/font><font color=\"#00007F\">position<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">perform:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">selector<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">withArguments:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">args<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">result<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> stream <\/font><font color=\"#00007F\">position<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">start<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream <\/font><font color=\"#00007F\">position:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">start<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#3F3F3F\">result<\/font><font color=\"#000000\"><\/p>\n<p>and then early on while writing this post I realized that remembering the position was silly.  I might as well position the stream to zero and simply answer its resulting position.  I could then also use a smaller stream for sizing since only one opcode&#8217;s worth of bytecode was ever going to be written to the stream:<\/p>\n<p><\/font><b>sizeOpcodeSelector:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">genSelector<\/font><font color=\"#000000\"> <\/font><b>withArguments:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">args<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream <\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> [stream <\/font><b>:=<\/b><font color=\"#000000\"> WriteStream <\/font><font color=\"#00007F\">on:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">ByteArray <\/font><font color=\"#00007F\">new:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">64<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream <\/font><font color=\"#00007F\">position:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">perform:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">genSelector<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">withArguments:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">args<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">stream <\/font><font color=\"#00007F\">position<\/font><font color=\"#000000\"><\/p>\n<p>Much nicer&#8230;   &#8230;except that it resulted in a memory corruption that crashed the VM in the garbage collector.  And fool that I am, I spent two days tracking down the bug thinking it was a VM bug related to my new closure bytecodes rather than to my immediately preceeding compiler &quot;tweaking&quot;.<\/p>\n<p>The bug resulted from DebuggerMethodMap, the abstraction I introduced to insulate the Debugger from different bytecode sets.  A DebuggerMethodMap holds onto a BytecodeAgnosticMethodNode and uses it to compute both the set of temporary names to display in the debugger and the map of pc to source range for high-lighting the current expression.  Like the existing code it replaced the temp names and source extents are derived from doing a scratch recompilation of the mehtod source.  When the DebuggerMethodMap instance derived the source map after deriving the temp names in displaying the <\/font>fixBlockLocalTempsInSingleBlockMethods method in the debugger it caused the <font color=\"#000000\">BytecodeAgnosticMethodNode to reuse its BytecodeEncoder.  The encoder already had its stream initialised to the first method it generated to produce the temp names.  So when<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream <\/font><font color=\"#00007F\">position:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\">.<\/p>\n<p>was evaluated this reset the stream to point at the header of the previously generated CompiledMethod whose header word was promptly corrupted when generating the bytecode to be sized.  Soon thereafter the allocations done in evaluating <\/font><i>source copyFrom: 1 to: startOfBlock<\/i> caused the garbage collector to run which encountered the corrupted CompiledMethod header which completely screwed up the garbage collector&#8217;s parsing of the heap and caused the hard crash.  Ouch.<\/p>\n<p>There are a few lessons to be learnt from this.  One, which my own hubris means I have to relearn at alarming frequency is that if one has just changed something and the VM crashes soon thereafter it&#8217;s almost certainly one&#8217;s own bloody fault, dimwit!!  Another is that a system is only as safe as one makes it.  Array accesses in Smalltalk are safe, being bounds and type checked&#8230; except for blue-book CompiledMethod whose at:put: method does not check that a byte is being stored at or after a CompiledMethod&#8217;s initialPC (this at least is fixable).  I can hear Tim saying re blue-book CompiledMethods &quot;I told you so!&quot; :).<\/p>\n<p>OK, so two days further on how should we fix this?  Since all we need is the count of bytes written we can provide BytecodeEncoder with its own nextPut: and postion and we&#8217;re done:<\/p>\n<p><font color=\"#000000\">Encoder <\/font><font color=\"#00007F\">subclass:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">#BytecodeEncoder<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">instanceVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;stream position rootNode blockExtentsToLocals&#8217;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">classVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">poolDictionaries:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">category:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;Compiler-Kernel&#8217;<\/font><\/font><font color=\"#000000\"><br \/>\n<\/font><br \/>\n<i>BytecodeEncoder methods for opcode sizing<\/i><font color=\"#000000\"><br \/>\n<\/font><b>nextPut:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aByte<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;For sizing make the encoder its own stream and<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; keep track of position with this version of nextPut:&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position <\/font><b>:=<\/b><font color=\"#000000\"> position <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"><\/p>\n<p><\/font><b>sizeOpcodeSelector:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">genSelector<\/font><font color=\"#000000\"> <\/font><b>withArguments:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">args<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">perform:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">genSelector<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">withArguments:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">args<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">position<\/p>\n<p>Much nicer.<\/p>\n<p>Now this might seem much more like a documentary to you than <a href=\"http:\/\/en.wikipedia.org\/wiki\/Kino_Pravda\">Kino-Pravda<\/a> but alas soon after writing the first version of the above mini-tragedy (it being driven by my own character flaws) I lost the VM bug story by inadvertently closing the workspace containing my carefully formatted post and saving the image.  <em>Bang!<\/em>  Hence I have spent some time in the editing room recreating this.  Ouch #2.<\/p>\n<p>So where were we?  Right; we were trying to edit methods with misplaced block temporaries.  Now I can evaluate <\/font><i>source copyFrom: 1 to: startOfBlock<\/i>. but it includes the entire block, not just the first &#8216;[&#8216;.  Hmm.  My second mistake is in assuming the source range of a block is the entire block when in fact it is the last statement.  Please wait while I modify the compiler&#8230; (perhaps this is more like <a href=\"http:\/\/en.wikipedia.org\/wiki\/Magical_realism\">Magical Realism<\/a> &#8230;Done.  Now each BlockNode assigns its entire source range to its closureCreationNode:<\/p>\n<p><i><font color=\"#000000\">BlockNode methods for accessing<\/font><\/i><font color=\"#000000\"><br \/>\n<\/font><b>closureCreationNode<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closureCreationNode <\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[closureCreationNode <\/font><b>:=<\/b><font color=\"#000000\"> LeafNode <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">key:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">#closureCreationNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">code:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">nil<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">closureCreationNode<\/p>\n<p><\/font><font color=\"#000000\"><i>BlockNode methods for initialize-release<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>noteSourceRangeStart:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">start<\/font><font color=\"#000000\"> <\/font><b>end:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">end<\/font><font color=\"#000000\"> <\/font><b>encoder:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Note two source ranges for this node.  One is for the debugger<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and is of the last expression, the result of the block.  One is for<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source analysis and is for the entire block.&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">noteSourceRange:<\/font><font color=\"#000000\"> (<\/font><font color=\"#00007F\">start<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">to:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">end<\/font><font color=\"#000000\">)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">forNode:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">closureCreationNode<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startOfLastStatement<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">noteSourceRange:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#00007F\">start<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">to:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">end<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">forNode:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">noteSourceRange:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">startOfLastStatement <\/font><font color=\"#00007F\">to:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">end<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">forNode:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\">]<\/p>\n<p>OK, so now our method looks like<\/font><\/p>\n<p><font color=\"#000000\"><i>TempScopeEditor methods for source editing<\/i><\/font><br \/>\n<b>fixBlockLocalTempsInSingleBlockMethods<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Move temporaries declared at method level but used only at block<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; level to block level scope in methods that only contan one block<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (because this should be easier than dealing with multiple block cases).&quot;<\/font><font color=\"#000000\"><\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">candidateMethodsSuchThat:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">m<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">InstructionStream <\/font><font color=\"#00007F\">on:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scanFor:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">b<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">b<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">143<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\">\t&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">source<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">startOfBlock |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">select:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;readingScopes&#8217;<\/font><\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[true]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">rs<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">rs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;writingScopes&#8217;<\/font><\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[true]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">ws<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">ws<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F007F\">(<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">accept:<\/font><font color=\"#000000\"> BlockNodeCollectingVisitor <\/font><font color=\"#00007F\">new<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">blockNodes<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">reject:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">bn<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">bn<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">optimized<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\">.<br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceRangeFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">closureCreationNode<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">first<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">halt<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">]<\/p>\n<p>Let&#8217;s evaluate it and root around the halt to see that my next error is a misplaced closing bracket.  There are two following the halt and there should be three at the end of the block computing tempsToMove:<\/font><\/p>\n<p><font color=\"#000000\"><i>TempScopeEditor methods for source editing<\/i><\/font><br \/>\n<b>fixBlockLocalTempsInSingleBlockMethods<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Move temporaries declared at method level but used only at block<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; level to block level scope in methods that only contan one block<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (because this should be easier than dealing with multiple block cases).&quot;<\/font><font color=\"#000000\"><\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">candidateMethodsSuchThat:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">m<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">InstructionStream <\/font><font color=\"#00007F\">on:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scanFor:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">b<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">b<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">143<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">source<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">startOfBlock |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">select:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;readingScopes&#8217;<\/font><\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[true]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">rs<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">rs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;writingScopes&#8217;<\/font><\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[true]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">ws<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">ws<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F007F\">(<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">accept:<\/font><font color=\"#000000\"> BlockNodeCollectingVisitor <\/font><font color=\"#00007F\">new<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">blockNodes<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">reject:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">bn<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">bn<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">optimized<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceRangeFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">closureCreationNode<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">first<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">halt<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">&nbsp;&#8225;<\/p>\n<p>Now <\/font>source copyFrom: 1 to: startOfBlock is<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8216;copySameFrom: otherObject<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Copy to myself all instance variables named the same in otherObject.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This ignores otherObject&#8221;s control over its own inst vars.&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| myInstVars otherInstVars match |<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myInstVars := self class allInstVarNames.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;otherInstVars := otherObject class allInstVarNames.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myInstVars doWithIndex: [&#8216;<\/p>\n<p><img src=\"http:\/\/www.mirandabanda.org\/images\/TempScopeEditorHalt.jpeg\" alt=\"halt while working on the temp scope editor\" \/> and tempsToMove is an OrderedCollection({match}).  Now we can start editing, a process complex enough to need its own method.  It will likely need the blockNode itself, and we&#8217;ll want to eyeball the results:<\/p>\n<p><b>fixBlockLocalTempsInSingleBlockMethods<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Move temporaries declared at method level but used only at block<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; level to block level scope in methods that only contan one block<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (because this should be easier than dealing with multiple block cases).&quot;<\/font><font color=\"#000000\"><\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">candidateMethodsSuchThat:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">m<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">InstructionStream <\/font><font color=\"#00007F\">on:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scanFor:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">b<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">b<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">143<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">source<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">newSource<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">select:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;readingScopes&#8217;<\/font><\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[true]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">rs<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">rs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;writingScopes&#8217;<\/font><\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[true]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">ws<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">ws<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">accept:<\/font><font color=\"#000000\"> BlockNodeCollectingVisitor <\/font><font color=\"#00007F\">new<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">blockNodes<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">reject:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">bn<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">bn<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">optimized<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\">.<br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">newSource<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">moveTemps:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">to:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">in:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">source<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">encoder:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">StringHolder <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">textContents:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#000000\">TextDiffBuilder <\/font><font color=\"#00007F\">buildDisplayPatchFrom:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">source<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">to:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">newSource<\/font><font color=\"#7F007F\">)<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">openLabel:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;temps edit&#8217;<\/font><\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">halt<\/font><font color=\"#000000\">]<\/font><font color=\"#000000\"><\/p>\n<p>but since we need the methodNode to know which temporaries to keep my first cut ends up being<\/p>\n<p><\/font><b>moveTemps:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><b>in:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><b>to:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><b>in:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><b>encoder:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">String <\/font><font color=\"#00007F\">streamContents:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">s<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">reject:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceRangeFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">closureCreationNode<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">first<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\">;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">space<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPut:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">space<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPut:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">size<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<\/font><font color=\"#000000\"><br \/>\n<\/font><font color=\"#000000\"><br \/>\nwhich produces the following diff:<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>copySameFrom: otherObject<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Copy to myself all instance variables named the same in otherObject.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This ignores otherObject&#8217;s control over its own inst vars.&quot;<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| myInstVars  otherInstVars  i  iLimiT  &lt;0-6&gt;  |<\/font><font color=\"#000000\"><br \/>\n<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| myInstVars otherInstVars match |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myInstVars := self class allInstVarNames.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;otherInstVars := otherObject class allInstVarNames.<font color=\"#000000\"><br \/>\n<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myInstVars doWithIndex: [:each :index | | match  |<\/font><font color=\"#000000\"><br \/>\n<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myInstVars doWithIndex: [:each :index |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(match := otherInstVars indexOf: each) &gt; 0 ifTrue:<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[self instVarAt: index put: (otherObject instVarAt: match)]].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 to: (self basicSize min: otherObject basicSize) do: [:i |<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self basicAt: i put: (otherObject basicAt: i)].<\/p>\n<p>Progress.  We need to filter-out the implicit temporary &quot;&lt;0-6&gt;&quot; used to hold indirect temps:<br \/>\n<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;temporaries&#8217;<\/font><\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">reject:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isIndirectTempVector<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<\/p>\n<p>and filter-out implicit temporaries the compiler introduces when optimizing to:do: blocks (<\/font><font color=\"#FF0000\">i<\/font><font color=\"#000000\"> &amp; <\/font><font color=\"#FF0000\">iLimiT<\/font><font color=\"#000000\">):<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;temporaries&#8217;<\/font><\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">reject:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isIndirectTempVector<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scope<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&lt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<\/p>\n<p>and <\/font>include the indirect temps the implicit temp vector holds:<br \/>\n<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font>:=<font color=\"#000000\"> OrderedCollection <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isIndirectTempVector<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">[<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">remoteTemp<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <\/font><font color=\"#EA8C00\">(<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemp<\/font><font color=\"#EA8C00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#EA8C00\">[<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">addLast:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemp<\/font><font color=\"#EA8C00\">]<\/font><font color=\"#00EA00\">]<\/font><font color=\"#7F0000\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">[<\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scope<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&lt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#EA8C00\">[<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#EA8C00\">]<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00EA00\">[<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">addLast:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#00EA00\">]<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#FF0000\">.<br \/>\n<\/font><br \/>\nAnd there are extra spaces following each temporary:<br \/>\n<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<\/p>\n<p>Alright, a correct edit!<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>copySameFrom: otherObject<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Copy to myself all instance variables named the same in otherObject.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This ignores otherObject&#8217;s control over its own inst vars.&quot;<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| myInstVars otherInstVars |<\/font><font color=\"#000000\"><br \/>\n<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| myInstVars otherInstVars match |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myInstVars := self class allInstVarNames.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;otherInstVars := otherObject class allInstVarNames.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myInstVars doWithIndex: [:each :index |<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(match := otherInstVars indexOf: each) &gt; 0 ifTrue:<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[self instVarAt: index put: (otherObject instVarAt: match)]].<font color=\"#000000\"><br \/>\n<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 to: (self basicSize min: otherObject basicSize) do: [:i | | match |<\/font><font color=\"#000000\"><br \/>\n<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 to: (self basicSize min: otherObject basicSize) do: [:i |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self basicAt: i put: (otherObject basicAt: i)].<\/p>\n<p>So now instead of eyeballing let&#8217;s parse the result to test what we&#8217;ve got so far.  We&#8217;ll print to the transcript to track progress:<\/p>\n<p><b>fixBlockLocalTempsInSingleBlockMethods<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Move temporaries declared at method level but used only at block<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; level to block level scope in methods that only contan one block<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (because this should be easier than dealing with multiple block cases).&quot;<\/font><font color=\"#000000\"><\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">candidateMethodsSuchThat:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">m<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">InstructionStream <\/font><font color=\"#00007F\">on:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scanFor:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">b<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">b<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">143<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">source<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">newSource<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transcript <\/font><font color=\"#00007F\">cr<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">print:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;&gt;&gt;&#8217;<\/font><\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">print:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">selector<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">flush<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">select:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;readingScopes&#8217;<\/font><\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[true]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">rs<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">rs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;writingScopes&#8217;<\/font><\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[true]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">ws<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">ws<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">accept:<\/font><font color=\"#000000\"> BlockNodeCollectingVisitor <\/font><font color=\"#00007F\">new<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">blockNodes<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">reject:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">bn<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">bn<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">optimized<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">newSource<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">moveTemps:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">in:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">to:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">in:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">source<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">encoder:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">parserClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">parse:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">newSource<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">class:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;(StringHolder new textContents:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(TextDiffBuilder buildDisplayPatchFrom: source to: newSource))<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;openLabel: &#8216;temps edit&#8217;.&quot;<\/font><font color=\"#000000\">]<\/p>\n<p>Bang! <\/font><b>Error: subscript is out of bounds: -6<\/b>.  Huh?  This while trying to edit<\/p>\n<p><i>Object methods for *Tweak-Core-Object<\/i><br \/>\n<b>get:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">fieldName<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">var<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarAt:<\/font><font color=\"#000000\"> (<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">allInstVarNames<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">fieldName<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifAbsent:<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#7F007F\">(<\/font><font color=\"#3F3F3F\">var<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">bindingOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">fieldName<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#7F007F\">[<\/font><font color=\"#3F3F3F\">var<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">value<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">)<\/p>\n<p>And of course there are no arguments or temporaries in<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#7F0000\">^<\/font><font color=\"#7F007F\">(<\/font><font color=\"#3F3F3F\">var<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">bindingOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">fieldName<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#7F007F\">[<\/font><font color=\"#3F3F3F\">var<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">value<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<\/font><font color=\"#007F00\">]<\/p>\n<p><\/font><font color=\"#000000\">so endOfArgs is zero and the<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/p>\n<p><\/font><font color=\"#000000\">expression ends up moving the stream backwards 6 characters! So:<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">arguments<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<\/p>\n<p>And now the parser chugs along parsing about 90 edited methods until a SyntaxError:<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><b>readsTweakField:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">field<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Answer whether the receiver reads the given field&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">toGet<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">scanner<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">byte<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">type<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">max<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">offset<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">toGet<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">field<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">toGet<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\">[<\/font><font color=\"#7F0000\">^false<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">hasLiteral:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">toGet<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\">[<\/font><font color=\"#7F0000\">^false<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">max<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">numLiterals<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;We scan the first sixteen accurately&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">max<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">16<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\">[<\/font><font color=\"#3F3F3F\">max<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">16<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">to:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">numLiterals<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\">[:<\/font><font color=\"#FF0000\"><b>Name is already defined -&gt;<\/b><\/font><font color=\"#00007F\">i<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">literalAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">i<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">==<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">toGet<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;scan for push: self; send: toGet&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">scanner<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> InstructionStream <\/font><font color=\"#00007F\">on:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">scanner<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scanFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">insn<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">insn<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">16r70<\/font><font color=\"#000000\"> <\/font><font color=\"#007F7F\">&quot;push self&quot;<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">byte<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">at:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">scanner<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">pc+<\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">type<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">byte<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">\/\/<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">16<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">offset<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">byte<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">\\\\<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">16<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">type<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">12<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#00EA00\">[<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#EA8C00\">(<\/font><font color=\"#3F3F3F\">offset<\/font><font color=\"#00007F\">+<\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">i<\/font><font color=\"#EA8C00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#EA8C00\">[<\/font><font color=\"#7F0000\">^true<\/font><font color=\"#EA8C00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00EA00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">false<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">17<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">to:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">numLiterals<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\">[:<\/font><font color=\"#00007F\">i<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">literalAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">i<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">==<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">toGet<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#007F00\">[<\/font><font color=\"#7F0000\">^true<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^false<\/font><\/p>\n<p>Here i is remote because it is implicitly assigned to at the end of the 1 to: self numLiterals do:[:i|&#8230;] loop and read by the<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">insn<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">insn<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">16r70<\/font><font color=\"#000000\"> <\/font><font color=\"#007F7F\">&quot;push self&quot;<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">byte<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">at:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">scanner<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">pc+<\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">type<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">byte<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">\/\/<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">16<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">offset<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">byte<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">\\\\<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">16<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">type<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">12<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#00EA00\">[<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#EA8C00\">(<\/font><font color=\"#3F3F3F\">offset<\/font><font color=\"#00007F\">+<\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">i<\/font><font color=\"#EA8C00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#EA8C00\">[<\/font><font color=\"#7F0000\">^true<\/font><font color=\"#EA8C00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00EA00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">false<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">]<\/font><\/p>\n<p>block.  So we need to filter-out implicitly declared temps from tempsToMove in both arms:<br \/>\n<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isIndirectTempVector<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">[<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">rt<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">rt<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scope<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&lt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#EA8C00\">[<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">rt<\/font><font color=\"#EA8C00\">]<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00EA00\">[<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">addLast:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">rt<\/font><font color=\"#00EA00\">]<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scope<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&lt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">[<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#00EA00\">]<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">[<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">addLast:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<\/p>\n<p>Which results in 135 successful parses until Color class&gt;&gt;<\/font>colorTest:extent:colorMapper:.  One reason to keep the StringHolder diff expression in a comment in the fixBlockLocalTempsInSingleBlockMethods method is so I can easily evaluate it in the debugger and see the diff:<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;colorTest: depth extent: chartExtent colorMapper: colorMapper<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Create a palette of colors sorted horizontally by hue and vertically by lightness. Useful for eyeballing the color gamut of the display, or for choosing a color interactively.&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Note: It is slow to build this palette, so it should be cached for quick access.&quot;<br \/>\n<font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;(Color colorTest: 32 extent: 570@180 colorMapper: [:c | startHue palette transHt vSteps transCaption grayWidth hSteps x y c | Color<\/font><br \/>\n<font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;(Color colorTest: 32 extent: 570@180 colorMapper: [:c | c]) display&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;(Color colorTest: 32 extent: 570@180 colorMapper:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:c | Color<br \/>\n<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r: (c red * 7) asInteger \/ 7<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g: (c green * 7) asInteger \/ 7<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b: (c blue * 3) asInteger \/ 3]) display&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;(Color colorTest: 32 extent: 570@180 colorMapper:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:c | Color<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r: (c red * 5) asInteger \/ 5<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g: (c green * 5) asInteger \/ 5<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b: (c blue * 5) asInteger \/ 5]) display&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;(Color colorTest: 32 extent: 570@180 colorMapper:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:c | Color<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r: (c red * 15) asInteger \/ 15<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g: (c green * 15) asInteger \/ 15<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b: (c blue * 15) asInteger \/ 15]) display&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;(Color colorTest: 32 extent: 570@180 colorMapper:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:c | Color<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r: (c red * 31) asInteger \/ 31<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g: (c green * 31) asInteger \/ 31<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b: (c blue * 31) asInteger \/ 31]) display&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| basicHue x y c startHue palette transHt vSteps transCaption grayWidth hSteps |<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8230;<\/p>\n<p>Oops!  My editor is naive enough to be fooled by code inside comments.  We need to search for the method-level temps from the start of the temporaries proper.  Luckily the parser has a pair of methods that can be used to do just this. Parser&gt;&gt;parseMethodComment:setPattern: parses the selector and arguments and any initial comments, leaving the parser at the first non-comment token of the method body.  Parser&gt;&gt;startOfNextToken answers this token&#8217;s source position.  So let&#8217;s add this as an argument to the editing method.  Lets also factor out the tempsToKeep computation for readability.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n<b>fixBlockLocalTempsInSingleBlockMethods<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Move temporaries declared at method level but used only at block<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; level to block level scope in methods that only contan one block<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (because this should be easier than dealing with multiple block cases).&quot;<\/font><font color=\"#000000\"><\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">candidateMethodsSuchThat:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">m<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">InstructionStream <\/font><font color=\"#00007F\">on:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">m<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scanFor:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">b<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">b<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">143<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">numBlocks<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">source<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">methodBodyStart<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">newSource<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transcript <\/font><font color=\"#00007F\">cr<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">print:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;&gt;&gt;&#8217;<\/font><\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">print:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">selector<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">flush<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">select:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;readingScopes&#8217;<\/font><\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[true]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">rs<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">rs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;writingScopes&#8217;<\/font><\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[true]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifNotNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">ws<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">ws<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">accept:<\/font><font color=\"#000000\"> BlockNodeCollectingVisitor <\/font><font color=\"#00007F\">new<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">blockNodes<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">reject:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">bn<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">bn<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">optimized<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\">.<br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">methodBodyStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">parserClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">parseMethodComment:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">source<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">setPattern:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">ignored<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">startOfNextToken<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">newSource<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">moveTemps:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsToMove<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">in:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">to:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">source:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">source<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">methodBodyStart:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">methodBodyStart<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">encoder:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">parserClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">parse:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">newSource<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">class:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;(StringHolder new textContents:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(TextDiffBuilder buildDisplayPatchFrom: source to: newSource))<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;openLabel: &#8216;temps edit&#8217;.&quot;<\/font><font color=\"#000000\">]<\/p>\n<p><\/font><b>moveTemps:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><b>in:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><b>to:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><b>source:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><b>methodBodyStart:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodBodyStart<\/font><font color=\"#000000\"> <\/font><b>encoder:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">String <\/font><font color=\"#00007F\">streamContents:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">s<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToKeepAtMethodLevelOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToMove:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceRangeFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">closureCreationNode<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">first<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">arguments<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodBodyStart<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\">;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPut:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPut:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">size<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<\/p>\n<p><\/font><b>tempsToKeepAtMethodLevelOf:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><b>tempsToMove:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> OrderedCollection <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">block<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isIndirectTempVector<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">rt<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">rt<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scope<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&lt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">[<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">rt<\/font><font color=\"#00EA00\">]<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">[<\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">addLast:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">rt<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scope<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&lt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">[<\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">addLast:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"><\/p>\n<p>Good.  Now we can edit and parse 228 methods before an obvious case I should have thought of, that of moving temps into a block that already has block-local temps:<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>privateAddAllMorphs: aCollection atIndex: index<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Private. Add aCollection of morphs to the receiver&quot;<font color=\"#000000\"><br \/>\n<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| myWorld otherSubmorphs |<\/font><font color=\"#000000\"><br \/>\n<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| myWorld itsWorld otherSubmorphs |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myWorld := self world.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;otherSubmorphs := submorphs copyWithoutAll: aCollection.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(index between: 0 and: otherSubmorphs size)<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [^ self error: &#8216;index out of range&#8217;].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index = 0<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue:[\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;submorphs := aCollection asArray, otherSubmorphs]<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse:[\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index = otherSubmorphs size<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue:[\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;submorphs := otherSubmorphs, aCollection]<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse:[\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;submorphs := otherSubmorphs copyReplaceFrom: index + 1 to: index with: aCollection ]].<font color=\"#000000\"><br \/>\n<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aCollection do: [:m | | itsWorld | | itsOwner |<\/font><font color=\"#000000\"><br \/>\n<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aCollection do: [:m | | itsOwner |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itsOwner := m owner.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itsOwner ifNotNil: [<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itsWorld := m world.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(itsWorld == myWorld) ifFalse: [<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itsWorld ifNotNil: [self privateInvalidateMorph: m].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m outOfWorld: itsWorld].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(itsOwner ~~ self) ifTrue: [<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m owner privateRemove: m.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m owner removedMorph: m ]].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m privateOwner: self.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myWorld ifNotNil: [self privateInvalidateMorph: m].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(myWorld == itsWorld) ifFalse: [m intoWorld: myWorld].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itsOwner == self ifFalse: [<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self addedMorph: m.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m noteNewOwner: self ].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self layoutChanged.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nObviously we&#8217;ve potentially got the same problem finding the start of the block-level temps as finding the start of the method-level temps; a comment could come before the block-level temps and include a | character.  But this is really unlikely style so let&#8217;s just do the simple thing:<\/p>\n<p><\/font><b>moveTemps:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><b>in:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><b>to:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><b>source:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><b>methodBodyStart:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodBodyStart<\/font><font color=\"#000000\"> <\/font><b>encoder:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">String <\/font><font color=\"#00007F\">streamContents:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">s<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">restStart<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToKeepAtMethodLevelOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToMove:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceRangeFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">closureCreationNode<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">first<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">arguments<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">startOfBlock<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">methodBodyStart<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\">;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">tempsEnd<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPut:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPut:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">restStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#7F7F7F\">blockTempsStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">restStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">blockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">size<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">restStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">restStart<\/font><font color=\"#000000\">]<\/p>\n<p>Boom!  It now blows up much earlier.  Here&#8217;s a diff:<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>nextOrNilSuchThat: aBlock<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Answer the next object that satisfies aBlock, skipping any intermediate objects.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If no object has been sent, answer &lt;nil&gt; and leave me intact.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOTA BENE:  aBlock MUST NOT contain a non-local return (^).&quot;<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| value |<\/font><font color=\"#FF0000\"><br \/>\n<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accessProtect critical: [[<\/font><font color=\"#0000FF\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| value readPos |<\/font><font color=\"#0000FF\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accessProtect critical: [<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value := nil.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readPos := readPosition.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[readPos &lt; writePosition and: [value isNil]] whileTrue: [<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value := contentsArray at: readPos.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readPos := readPos + 1.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(aBlock value: value) ifTrue: [<font color=\"#000000\"><br \/>\n<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readPosition to: readPos &#8211; 1 do: [ :j | readPos<\/font><font color=\"#000000\"><br \/>\n<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readPosition to: readPos &#8211; 1 do: [ :j |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contentsArray at: j put: nil.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readPosition := readPos.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;] ifFalse: [<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value := nil.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readPosition &gt;= writePosition ifTrue: [readSynch initSignals].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^value<\/p>\n<p>because the critical: block only has implicit temporaries<font color=\"#000000\"> (the i in <\/font><font color=\"#000000\">readPosition to: readPos &#8211; 1 do: [ :j |&#8230;]).  We could try filtering-out implicit temps as in<br \/>\n<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">select:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scope<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><\/p>\n<p>but this won&#8217;t work for a couple of reasons.  One, the compiler marks block temporaries as out-of-scope once a block has been parsed so all block temps are going to have their scopes less than zero in any parse tree.  Two, there could be a temporary declaration in an optimized block nested within it and the start of those nested temporaries won&#8217;t be anywhere near the right place.  We need to search for the block&#8217;s temporaries immediately following the arguments:<\/font><br \/>\n<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifAbsent:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">size<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">copyFrom:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">to:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">allSatisfy:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">c<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">c<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isSeparator<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">restStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPut:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">tempsToMove<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPut:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">restStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">s<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">size<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">restStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceString<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">restStart<\/font><font color=\"#000000\">]<\/p>\n<p>and lo and behold all 645 odd methods are edited and parse correctly.  Arguably we&#8217;ve got by on a wing and a prayer, but that&#8217;s at least part of the XP way.  Do the simplest thing that could possibly work.  I haven&#8217;t been able to demonstrate how quickly this can be done because I&#8217;ve been writing this as I&#8217;ve gone along, and have had a couple of unexpected stumbles along the way, so it has been far from fleet.  But I hope I&#8217;ve demonstrated how exploratory programming has got us to a solution quite easily, the debugger being a great tool to use to understand a problem.  Had we started off with BUFD I might have been lazy or intimidated and given up; after all the code still works without the editing.  But using the environment we&#8217;ve come up with a solution and it&#8217;s been fun (at least for me).   But we&#8217;re not done yet.  We need to generalize to methods with more than one block and we need to check for read-before-written temps before this is a tool we an use to eliminate unnecessary remote temps and proceed to take some meaningful measurements.<\/p>\n<p><H2>A More Comprehensive Implementation<\/H2><br \/>\nNow we understand the problem enough that we can do some up-front design.  To generalise we need to move temporaries to their correct block scope.  Handling multiple blocks doesn&#8217;t change the fact that we&#8217;re moving temps so the start of the process, deleting the temps from method-level scope, is unchanged.  Further, since block declarations follow each other, if we iterate through blocks in source order our cheap and cheerful editing process can be extended.  We need to maintain the position in the source we&#8217;ve got to so far and output from this point up through the current block&#8217;s temporaries.<\/p>\n<p>Let&#8217;s make the editor deal with a single method at a time.  We can get all of the information we need to compile from the method.  We need an output stream on which to write the modifed source, a map of some sort indicating which temps to move to which block and we need the block nodes in the method.  In extending the source editing approach we&#8217;ll need to know where we are in the input source so far.  We also need the encoder since source ranges for blocks are obtained from it.<\/p>\n<p>Object <\/font><font color=\"#00007F\">subclass:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">#TempScopeEditor<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">instanceVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;method out tempMap blockNodes sourceString soFar encoder&#8217;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">classVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">poolDictionaries:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">category:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;Cog-Scripts&#8217;<\/p>\n<p><\/font><\/font><font color=\"#000000\"><i>TempScopeEditor methods for initialize-release<\/i><\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\"><br \/>\n<\/font><\/font><b>forMethod:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aCompiledMethod<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aCompiledMethod<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sourceString <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aCompiledMethod<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">getSourceFromFile<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">asString<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">methodNode<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> method <\/font><font color=\"#00007F\">methodClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">parserClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">parse:<\/font><font color=\"#000000\"> sourceString<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">class:<\/font><font color=\"#000000\"> method <\/font><font color=\"#00007F\">methodClass<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ensureClosureAnalysisDone<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;encoder <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blockNodes <\/font><b>:=<\/b><font color=\"#000000\"> (<\/font><font color=\"#3F3F3F\">methodNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">accept:<\/font><font color=\"#000000\"> BlockNodeCollectingVisitor <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\">)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">blockNodes<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">reject:<\/font><font color=\"#000000\"> [:<\/font><font color=\"#00007F\">bn<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">bn<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">optimized<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out <\/font><b>:=<\/b><font color=\"#000000\"> (String <\/font><font color=\"#00007F\">new:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">size<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">writeStream<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempMap <\/font><b>:=<\/b><font color=\"#000000\"> IdentityDictionary <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\"><\/p>\n<p>We need to edit the method.  That&#8217;ll be the main entry point.  We need to construct the temp map and then edit it.  I&#8217;ll end with a halt for now, to check the output.<\/p>\n<p><\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>edit<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">buildTempMap<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">copyMethodMovingTemps<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">halt<\/font><font color=\"#000000\"><\/p>\n<p>Since visitors visit the parse nodes in order of evaluation we can find the smallest enclosing scope by choosing the last block that fully encloses a temp.<\/p>\n<p><\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>buildTempMap<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Build the map for moving remote temps. Each remote temp<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; that should be moved is entered into the map referencing its<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smallest enclosing scope.  This may seem backwards but it<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; means that the map is one-to-one, not one-to-many.&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blockNodes <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">notEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isIndirectTempVector<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">remoteTemp<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">enclosingScopes<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">smallestEnclosingBlockScope<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">enclosingScopes<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> blockNodes <\/font><font color=\"#00007F\">select:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">blockScope<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockScope<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">isEnclosingScopeFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemp<\/font><font color=\"#7F0000\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">enclosingScopes<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">notEmpty<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">[<\/font><font color=\"#7F7F7F\">smallestEnclosingBlockScope<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">enclosingScopes<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">smallestEnclosingBlockScope<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">~~<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00EA00\">[<\/font><font color=\"#000000\">tempMap <\/font><font color=\"#00007F\">at:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemp<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">put:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">smallestEnclosingBlockScope<\/font><font color=\"#00EA00\">]<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">]<\/p>\n<p>Finding out whether a block is a valid scope is easy if we find the converse.  Reject temps that have any references outside of a given block.<\/p>\n<p><\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>blockNode:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlockNode<\/font><font color=\"#000000\"> <\/font><b>isEnclosingScopeFor:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aTempVariableNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">(<\/font><font color=\"#007F00\">(<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">anyScopes:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">aTempVariableNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;readingScopes&#8217;<\/font><\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">outsideExtent:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockExtent<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">anyScopes:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">(<\/font><font color=\"#00007F\">aTempVariableNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;writingScopes&#8217;<\/font><\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">outsideExtent:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockExtent<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">not<\/p>\n<p><\/font><b>anyScopes:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">referenceScopeDict<\/font><font color=\"#000000\"> <\/font><b>outsideExtent:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockExtent<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#00007F\">referenceScopeDict<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">notEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> [<\/font><font color=\"#00007F\">referenceScopeDict<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">anySatisfy:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">set<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">set<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">anySatisfy:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">location<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">blockExtent<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">rangeIncludes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">location<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">]<\/p>\n<p>If we don&#8217;t find any temps to move the method doesn&#8217;t need editing.  So our edit method should be more like<\/p>\n<p><\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<br \/>\n<\/i><\/font><b>edit<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">buildTempMap<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempMap <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">copyMethodMovingTemps<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">halt<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; method <\/font><font color=\"#00007F\">methodClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">compile:<\/font><font color=\"#000000\"> out <\/font><font color=\"#00007F\">contents<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">classified:<\/font><font color=\"#000000\"> method <\/font><font color=\"#00007F\">methodReference<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">category<\/font><font color=\"#000000\">]<\/p>\n<p>Now we can adapt the old code.  We need to enumerate over all blocks except the first one, which is actually a block node for the entire method.<\/p>\n<p><\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<br \/>\n<\/i><\/font><b>copyMethodMovingTemps<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">methodBodyStart<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">methodBodyStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> method <\/font><font color=\"#00007F\">methodClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">parserClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">parseMethodComment:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">setPattern:<\/font><font color=\"#000000\"> [:<\/font><font color=\"#00007F\">ignored<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\">];<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">startOfNextToken<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToKeepAtMethodLevel<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[soFar <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">methodBodyStart<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soFar <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blockNodes <\/font><font color=\"#00007F\">allButFirst<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">processBlockNode:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">size<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> soFar<\/p>\n<p>Since the first block is that of the entire method we can compute the set of method-level temps to keep from it.  But we need to compute temps to keep for each block node so we can factor-out.  But there&#8217;s a wrinkle.  The compiler marks all block temps as out of scope on leaving the block but not all method-level scopes. Hence<\/p>\n<p><\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>tempsToKeepAtMethodLevel<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">(<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToKeepFor:<\/font><font color=\"#000000\"> blockNodes <\/font><font color=\"#00007F\">first<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">select:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scope<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;=<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\">]<\/p>\n<p><\/font><b>tempsToKeepFor:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> OrderedCollection <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isIndirectTempVector<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">rt<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">(<\/font><font color=\"#000000\">tempMap <\/font><font color=\"#00007F\">includesKey:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">rt<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">[<\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">addLast:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">rt<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">addLast:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"><\/p>\n<p>So the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Big_Kahuna\">Big Kahuna<\/a> is<\/p>\n<p><\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>processBlockNode:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsToMoveHere<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">blockTempsInSource<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">tempsToMoveHere<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> (tempMap <\/font><font color=\"#00007F\">select:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">aBlockNode<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">==<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">keys<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> (encoder <\/font><font color=\"#00007F\">sourceRangeFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">closureCreationNode<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">first<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">arguments<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> [<\/font><font color=\"#3F3F3F\">startOfBlock<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"> [sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">startOfBlock<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> soFar.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifAbsent:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">size<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">blockTempsInSource<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> (sourceString <\/font><font color=\"#00007F\">copyFrom:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">to:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">allSatisfy:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">c<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">c<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isSeparator<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">blockTempsInSource<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#007F00\">(<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToKeepFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">tempNode<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#3F3F3F\">tempsToMoveHere<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soFar <\/font><b>:=<\/b><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">sourceString <\/font><font color=\"#00007F\">at:<\/font><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isSeparator<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">soFar <\/font><b>:=<\/b><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPut:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">tempsToMoveHere<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPut:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soFar <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<\/p>\n<p>Finding an interesting method to test, one that has an indirect temp in a block that needs moving let&#8217;s test it:<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>&quot;Find a block scope with a temp that needs moving.&quot;<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>| scanner |<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>scanner := InstructionStream new.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>SystemNavigation default browseAllSelect:<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:m| | seenBlock |<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;seenBlock := false.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m isQuick not<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [scanner method: m pc: m initialPC.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanner scanFor:<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:b|<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b = 143 ifTrue: [seenBlock := true].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;seenBlock and: [b = 138 and: [scanner followingByte &lt;= 127]]]]]<\/p>\n<p>which throws up SARInstaller class&gt;&gt;ensurePackageWithId:<\/p>\n<p><b>ensurePackageWithId:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">anIdString<\/font><font color=\"#000000\"><\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">squeakMapDo:<\/font><font color=\"#000000\"> [ :<\/font><font color=\"#00007F\">sm<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">card<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">newCS<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">withCurrentChangeSetNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;updates&#8217;<\/font><\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">cs<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">newCS<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">cs<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">card<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sm<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">cardWithId:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">anIdString<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#7F7F7F\">card<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isNil<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">card<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isInstalled<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">[<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">card<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isOld<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">]<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sm<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">installPackageWithId:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">anIdString<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">newCS<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\"> ChangeSet <\/font><font color=\"#00007F\">removeChangeSet:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">newCS<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].<\/p>\n<p>Editing it works nicely:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>ensurePackageWithId: anIdString<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self squeakMapDo: [ :sm | | card newCS |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self withCurrentChangeSetNamed: &#8216;updates&#8217; do: [ :cs |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self squeakMapDo: [ :sm | | newCS |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#0000FF\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self withCurrentChangeSetNamed: &#8216;updates&#8217; do: [ :cs | | card |<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newCS := cs.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;card := sm cardWithId: anIdString.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(card isNil or: [ card isInstalled not or: [ card isOld ]])<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [ sm installPackageWithId: anIdString ]<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newCS isEmpty ifTrue: [ ChangeSet removeChangeSet: newCS ]<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].<font color=\"#000000\"><\/p>\n<p>To this we need to add a read-before-written checker and we should be able to fix all methods in the system (rather than all conceivable methods).  We can implement another simple visitor:<\/p>\n<p><\/font><font color=\"#000000\">ParseNodeVisitor <\/font><font color=\"#00007F\">subclass:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">#ReadBeforeWrittenVisitor<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">instanceVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;readBeforeWritten written&#8217;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">classVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">poolDictionaries:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">category:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;Cog-Scripts&#8217;<\/font><\/font><font color=\"#000000\"><\/p>\n<p><\/font><font color=\"#000000\"><i>ReadBeforeWrittenVisitor<\/i><\/font><font color=\"#000000\"><i> methods for accessing<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>readBeforeWritten<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">readBeforeWritten <\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> [IdentitySet <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\">]<\/p>\n<p><\/font><font color=\"#000000\"><i>ReadBeforeWrittenParseNodeVisitor<\/i><\/font><font color=\"#000000\"><i> methods for visiting<br \/>\n<\/i><\/font><b>visitAssignmentNode:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">anAssignmentNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">anAssignmentNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">variable<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isTemp<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[written <\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">written <\/font><b>:=<\/b><font color=\"#000000\"> IdentitySet <\/font><font color=\"#00007F\">new<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;written <\/font><font color=\"#00007F\">add:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">anAssignmentNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">variable<\/font><font color=\"#000000\">]<\/p>\n<p><\/font><b>visitTempVariableNode:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">aTempVariableNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<\/font><font color=\"#00007F\">aTempVariableNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isArg<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">written <\/font><font color=\"#00007F\">notNil<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">written <\/font><font color=\"#00007F\">includes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">aTempVariableNode<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<\/font><font color=\"#7F0000\">^self<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readBeforeWritten <\/font><font color=\"#00007F\">ifNil:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[readBeforeWritten <\/font><b>:=<\/b><font color=\"#000000\"> IdentitySet <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readBeforeWritten <\/font><font color=\"#00007F\">add:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">aTempVariableNode<\/font><font color=\"#000000\"><\/p>\n<p>and let&#8217;s test it.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>| mc |<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>mc := #none.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>SystemNavigation default browseAllSelect:<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:m|<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m methodClass ~~ mc ifTrue:<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Transcript cr; print: (mc := m methodClass); flush].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m isQuick not<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and: [(m methodNode accept: ReadBeforeWrittenVisitor new) readBeforeWritten notEmpty]]<\/p>\n<p>Let&#8217;s see what the editor does before adding the read-before-written check:<br \/>\n<font color=\"#000000\"><br \/>\n<\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<br \/>\n<\/i><\/font><b>editNoCompile<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">buildTempMap<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">tempMap <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">copyMethodMovingTemps<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out <\/font><font color=\"#00007F\">contents<\/font><font color=\"#000000\">]<\/p>\n<p>and test it on something that has a read-before-written temp:<br \/>\n<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(TempScopeEditor new forMethod: Collection &gt;&gt; #detectMax:) editNoCompile<\/p>\n<p>produces<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8216;detectMax: aBlock<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Evaluate aBlock with each of the receiver&#8221;s elements as the argument.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer the element for which aBlock evaluates to the highest magnitude.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If collection empty, return nil.  This method might also be called elect:.&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| maxElement|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self do: [:each | | maxValue val |<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxValue == nil<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(val := aBlock value: each) &gt; maxValue ifTrue: [<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxElement := each.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxValue := val]]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [&quot;first element&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxElement := each.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxValue := aBlock value: each].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Note that there is no way to get the first element that works<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for all kinds of Collections.  Must test every one.&quot;].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^ maxElement&#8217;<\/p>\n<p>Indeed, maxValue is incorrectly moved into the inner scope.  But there&#8217;s also a minor bug with the missing space before the closing vertical bar.  Let&#8217;s fix that.<br \/>\n<font color=\"#000000\"><br \/>\n<\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<br \/>\n<\/i><\/font><b>copyMethodMovingTemps<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">methodBodyStart<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">methodBodyStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> method <\/font><font color=\"#00007F\">methodClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">parserClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">parseMethodComment:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">setPattern:<\/font><font color=\"#000000\"> [:<\/font><font color=\"#00007F\">ignored<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\">];<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">startOfNextToken<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToKeepAtMethodLevel<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[soFar <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">methodBodyStart<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soFar <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\">.<br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">sourceString <\/font><font color=\"#00007F\">at:<\/font><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isSeparator<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">soFar <\/font><b>:=<\/b><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blockNodes <\/font><font color=\"#00007F\">allButFirst<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">processBlockNode:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">size<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> soFar<\/p>\n<p>To add the read-before-written check I need to make sure the visitor visits the same parse tree we derive the block nodes from so that the visitor answers temp nodes in the block node&#8217;s tree.  I need to make the method node an instance variable.  I can derive the encoder from the method node, so&#8230;<\/p>\n<p>Object <\/font><font color=\"#00007F\">subclass:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">#TempScopeEditor<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">instanceVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;method methodNode out tempMap blockNodes sourceString soFar&#8217;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">classVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">poolDictionaries:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">category:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;Cog-Scripts&#8217;<\/font><\/font><font color=\"#000000\"><\/p>\n<p><\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<br \/>\n<\/i><\/font><b>buildTempMap<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Build the map for moving remote temps. Each remote temp<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; that should be moved is entered into the map referencing its<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smallest enclosing scope.  This may seem backwards but it<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; means that the map is one-to-one, not one-to-many.&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">readBeforeWritten<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">readBeforeWritten<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> (methodNode <\/font><font color=\"#00007F\">accept:<\/font><font color=\"#000000\"> ReadBeforeWrittenVisitor <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">readBeforeWritten<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blockNodes <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">(<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">notEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isIndirectTempVector<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">temporaries<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemps<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">remoteTemp<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">enclosingScopes<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">smallestEnclosingBlockScope<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F0000\">(<\/font><font color=\"#3F3F3F\">readBeforeWritten<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">includes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemp<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">[<\/font><font color=\"#7F7F7F\">enclosingScopes<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> blockNodes <\/font><font color=\"#00007F\">select:<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">blockScope<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockScope<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">isEnclosingScopeFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemp<\/font><font color=\"#00EA00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">enclosingScopes<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">notEmpty<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00EA00\">[<\/font><font color=\"#7F7F7F\">smallestEnclosingBlockScope<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">enclosingScopes<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">last<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">smallestEnclosingBlockScope<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">~~<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#EA8C00\">[<\/font><font color=\"#000000\">tempMap <\/font><font color=\"#00007F\">at:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">remoteTemp<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">put:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">smallestEnclosingBlockScope<\/font><font color=\"#EA8C00\">]<\/font><font color=\"#00EA00\">]<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">]<\/p>\n<p>and now<br \/>\n<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(TempScopeEditor new forMethod: Collection &gt;&gt; #detectMax:) editNoCompile<\/p>\n<p>produces<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8216;detectMax: aBlock<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Evaluate aBlock with each of the receiver&#8221;s elements as the argument.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer the element for which aBlock evaluates to the highest magnitude.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If collection empty, return nil.  This method might also be called elect:.&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| maxElement maxValue |<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self do: [:each | | val |<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxValue == nil<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse: [<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(val := aBlock value: each) &gt; maxValue ifTrue: [<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxElement := each.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxValue := val]]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [&quot;first element&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxElement := each.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxValue := aBlock value: each].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Note that there is no way to get the first element that works<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for all kinds of Collections.  Must test every one.&quot;].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^ maxElement&#8217;<\/p>\n<p><H2>Measurements<\/H2><\/p>\n<p>Good.  I hope we&#8217;re done.  Let&#8217;s count and see the change:<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| numMethods numMethodsWithClosure numMethodsWithIndirectTemps<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numClosures numClosuresWithCopiedValues numCopiedValues<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numRemoteTemps numScopesWithRemoteTemps |<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numMethods := numMethodsWithClosure := numMethodsWithIndirectTemps :=<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numClosures := numClosuresWithCopiedValues := numCopiedValues :=<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numRemoteTemps := numScopesWithRemoteTemps := 0.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemNavigation default allSelect:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:m| | s hasBlock hasIndirectTemps  |<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasBlock := hasIndirectTemps := false.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s := InstructionStream on: m.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s scanFor:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:b|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b = 143 &quot;closure creation&quot; ifTrue:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[hasBlock := true.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numClosures := numClosures + 1.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s followingByte &gt;= 16 ifTrue:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[numClosuresWithCopiedValues := numClosuresWithCopiedValues + 1.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numCopiedValues := numCopiedValues + (s followingByte &gt;&gt; 4)]].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(b = 138 &quot;indirect temp vector creation&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [s followingByte &lt;= 127]) ifTrue:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[hasIndirectTemps := true.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numScopesWithRemoteTemps := numScopesWithRemoteTemps + 1.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numRemoteTemps := numRemoteTemps + s followingByte].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numMethods := numMethods  + 1.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasBlock ifTrue: [numMethodsWithClosure := numMethodsWithClosure + 1].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasIndirectTemps ifTrue: [numMethodsWithIndirectTemps := numMethodsWithIndirectTemps + 1].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ numMethods. numMethodsWithClosure. numMethodsWithIndirectTemps.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   numClosures. numCopiedValues. numClosuresWithCopiedValues.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   numRemoteTemps. numScopesWithRemoteTemps }<br \/>\ngives<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #(67701 10966 2430 18380 14843 9249 4828 2436)<\/p>\n<p>So 10966 \/ 677.01 = 16.2% of methods contain a closure.  Prior to editing 2430 \/ 109.66 = 22.2% of these methods need indirect temps.<\/p>\n<p>Now let&#8217;s edit.  We only need look at methods which create a closure:<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemNavigation default allSelect:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:m| | s |<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s := InstructionStream on: m.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(s scanFor:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:b|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b = 143 &quot;closure creation&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [s followingByte &gt;= 16]]) ifTrue:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[(TempScopeEditor new forMethod: m) edit].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false]<\/p>\n<p>Boom!  SyntaxError for Object&gt;&gt;get:<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>get:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">fieldName<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">var<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">instVarAt:<\/font><font color=\"#000000\"> (<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">allInstVarNames<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">fieldName<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifAbsent:<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">Name<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">is<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">already<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">defined<\/font><font color=\"#FF0000\"> -&gt;var |<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^(var := self class bindingOf: fieldName) ifNotNil:[var value].<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#FF0000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;])<\/font><font color=\"#000000\"><\/p>\n<p>I&#8217;m forgetting to remove temporaries if all method-level temps are moved.  So<\/p>\n<p><\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>copyMethodMovingTemps<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">methodBodyStart<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">methodBodyStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> method <\/font><font color=\"#00007F\">methodClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">parserClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">parseMethodComment:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">setPattern:<\/font><font color=\"#000000\"> [:<\/font><font color=\"#00007F\">ignored<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\">];<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">startOfNextToken<\/font><font color=\"#000000\">.<br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">methodBodyStart<\/font><font color=\"#000000\">.<br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToKeepAtMethodLevel<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soFar <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soFar <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">sourceString <\/font><font color=\"#00007F\">at:<\/font><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isSeparator<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">soFar <\/font><b>:=<\/b><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blockNodes <\/font><font color=\"#00007F\">allButFirst<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">processBlockNode:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">size<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> soFar<\/font><\/p>\n<p>Boom!  SyntaxError for EventSensor &gt;&gt; #eventTickler<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>eventTickler<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Poll infrequently to make sure that the UI process is not been stuck. <\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">If it has been stuck, then spin the event loop so that I can detect the <\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">interrupt key.&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">delay<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">delay<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> Delay <\/font><font color=\"#00007F\">forMilliseconds:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">eventPollPeriod<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">lastEventPoll<\/font><font color=\"#000000\">.\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;ensure not nil.&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">delta<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">delay<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">wait<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">delta<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> Time <\/font><font color=\"#00007F\">millisecondClockValue<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> lastEventPoll.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#7F7F7F\">delta<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&lt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">0<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#7F7F7F\">delta<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&gt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">class<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">eventPollPeriod<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#007F7F\">&quot;force check on rollover&quot;<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">fetchMoreEvents<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">on:<\/font><font color=\"#000000\"> Error <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">ex<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">true<\/font><font color=\"#000000\"> ] <\/font><font color=\"#00007F\">whileTrue<\/font><font color=\"#000000\">.<\/p>\n<p>This has a method-level temp declared inside an optimized block, a case I was hoping not to encounter.  Let me see if I can just ignore these.  Hopefully there shouldn&#8217;t be very many of them.<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>SystemNavigation default browseAllSelect:<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:m| | s browseDueToSyntaxError |<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;browseDueToSyntaxError := false.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s := InstructionStream on: m.<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(s scanFor:<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:b|<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b = 143 &quot;closure creation&quot;<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [s followingByte &gt;= 16]]) ifTrue:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[(TempScopeEditor new forMethod: m) edit]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on: SyntaxErrorNotification<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do: [:ex|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;browseDueToSyntaxError := true.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex return]].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false].<font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;browseDueToSyntaxError]<\/p>\n<p><font color=\"#000000\">But I also notice there is an empty temp declaration in the <\/font><font color=\"#00007F\">on:<\/font><font color=\"#000000\"> Error <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">ex<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"> error handler block. So&#8230;<\/p>\n<p><\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>processBlockNode:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsToMoveHere<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">blockTempsInSource<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">tempsToMoveHere<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> (tempMap <\/font><font color=\"#00007F\">select:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">aBlockNode<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">aBlockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">==<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">keys<\/font><font color=\"#000000\">.<br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">tempsToMoveHere<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> [<\/font><font color=\"#7F0000\">^self<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">startOfBlock<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> (methodNode <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceRangeFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">closureCreationNode<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">first<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">arguments<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> [<\/font><font color=\"#3F3F3F\">startOfBlock<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"> [sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">startOfBlock<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> soFar.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifAbsent:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">size<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">blockTempsInSource<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> (sourceString <\/font><font color=\"#00007F\">copyFrom:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">to:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">allSatisfy:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">c<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">c<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isSeparator<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">blockTempsInSource<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#007F00\">(<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToKeepFor:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">tempNode<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempNode<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#3F3F3F\">tempsToMoveHere<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soFar <\/font><b>:=<\/b><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">maybeBlockTempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">sourceString <\/font><font color=\"#00007F\">at:<\/font><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isSeparator<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">soFar <\/font><b>:=<\/b><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPut:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#3F3F3F\">tempsToMoveHere<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPut:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soFar <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">endOfArgs<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">]<br \/>\n<\/font><br \/>\nLot&#8217;s of editing going on but then MessageNotUnderstood: UndefinedObject&gt;&gt;notEmpty<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>anyScopes:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">referenceScopeDict<\/font><font color=\"#000000\"> <\/font><b>outsideExtent:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockExtent<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#00007F\">referenceScopeDict<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\"><b>notEmpty<\/b><\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> [<\/font><font color=\"#00007F\">referenceScopeDict<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">anySatisfy:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">set<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">set<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">anySatisfy:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">location<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">(<\/font><font color=\"#00007F\">blockExtent<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">rangeIncludes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">location<\/font><font color=\"#7F0000\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">]<\/p>\n<p>Oops.  A TempVariableNode&#8217;s reading (or writing) scope&#8217;s dictionary will be nil if there are no reads (or writes) to it. So this needs to be<\/p>\n<p><\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>anyScopes:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">referenceScopeDict<\/font><font color=\"#000000\"> <\/font><b>outsideExtent:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockExtent<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#00007F\">referenceScopeDict<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">notNil<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> [<\/font><font color=\"#00007F\">referenceScopeDict<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">notEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   <\/font><font color=\"#00007F\">and:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#00007F\">referenceScopeDict<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">anySatisfy:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">set<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">set<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">anySatisfy:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">location<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">(<\/font><font color=\"#00007F\">blockExtent<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">rangeIncludes:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">location<\/font><font color=\"#00EA00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">]<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">]<\/p>\n<p><\/font>Great. 13 syntax errors.  So lots of methods edited and the system is still running \ud83d\ude42  But there is a syntax error reported for SARInstaller class&gt;&gt;ensurePackageWithId: and it has been misedited, missing a vertical bar before newCS:<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>ensurePackageWithId:<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">anIdString<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">squeakMapDo:<\/font><font color=\"#000000\"> [ :<\/font><font color=\"#00007F\">sm<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#FF0000\">newCS<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">|<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">withCurrentChangeSetNamed:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;updates&#8217;<\/font><\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">cs<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">card<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">newCS<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">cs<\/font><font color=\"#000000\">.<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">card<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">sm<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">cardWithId:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">anIdString<\/font><font color=\"#000000\">.<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F007F\">(<\/font><font color=\"#7F7F7F\">card<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isNil<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">[<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">card<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isInstalled<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">not<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">or:<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">[<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">card<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isOld<\/font><font color=\"#000000\"> <\/font><font color=\"#00EA00\">]<\/font><font color=\"#7F0000\">]<\/font><font color=\"#7F007F\">)<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">[<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sm<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">installPackageWithId:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">anIdString<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\">]<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#FF0000\">newCS<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\"> ChangeSet <\/font><font color=\"#00007F\">removeChangeSet:<\/font><font color=\"#000000\"> <\/font><font color=\"#FF0000\">newCS<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">]<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].<\/font><\/p>\n<p>Ah, here there are no method-level temps so the copyMethodMovingTemps method confuses the temp declaration in the block for a method-level temp declaration.  The tempsStart is for method-level only if tempsStart is before the start of the first proper block.  So&#8230;<br \/>\n<font color=\"#000000\"><br \/>\n<\/font><font color=\"#000000\"><i>TempScopeEditor methods for editing<\/i><\/font><br \/>\n<b>copyMethodMovingTemps<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">methodBodyStart<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">methodBodyStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> method <\/font><font color=\"#00007F\">methodClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">parserClass<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">new<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">parseMethodComment:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">setPattern:<\/font><font color=\"#000000\"> [:<\/font><font color=\"#00007F\">ignored<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\">];<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">startOfNextToken<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">methodBodyStart<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">indexOf:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">$|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">tempsToKeepAtMethodLevel<\/font><font color=\"#000000\">) <\/font><font color=\"#00007F\">isEmpty<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">startOfFirstBlock<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&#8225;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#7F7F7F\">startOfFirstBlock<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">methodNode <\/font><font color=\"#00007F\">encoder<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">sourceRangeFor:<\/font><font color=\"#000000\"> blockNodes <\/font><font color=\"#00007F\">second<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">closureCreationNode<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">first<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&lt;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">startOfFirstBlock<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  soFar <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">soFar <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">ifFalse:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsStart<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#3F3F3F\">tempsToKeep<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"> <\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">:<\/font><font color=\"#00007F\">t<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> out <\/font><font color=\"#00007F\">space<\/font><font color=\"#000000\">; <\/font><font color=\"#00007F\">nextPutAll:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">t<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">name<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soFar <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">tempsEnd<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/font><font color=\"#007F00\">(<\/font><font color=\"#000000\">sourceString <\/font><font color=\"#00007F\">at:<\/font><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">)<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">isSeparator<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">ifTrue:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F00\">[<\/font><font color=\"#000000\">soFar <\/font><b>:=<\/b><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#007F00\">]<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blockNodes <\/font><font color=\"#00007F\">allButFirst<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">do:<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:<\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">self<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">processBlockNode:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">blockNode<\/font><font color=\"#000000\">].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out <\/font><font color=\"#00007F\">next:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">size<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&#8211;<\/font><font color=\"#000000\"> soFar <\/font><font color=\"#00007F\">+<\/font><font color=\"#000000\"> <\/font><font color=\"#7F0000\">1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">putAll:<\/font><font color=\"#000000\"> sourceString <\/font><font color=\"#00007F\">startingAt:<\/font><font color=\"#000000\"> soFar<\/p>\n<p>Great, 1426 methods edited successfully and 13 syntax errors that I have to fix-up by hand.  I&#8217;m happy.  Of course this would have been much easier with Lisp (and arguably using the Refactoring Editor, but my current understanding is that the publicly available version doesn&#8217;t preserve formatting).  But writing 8 methods to edit 1426 automatically feels like a win to me.<\/p>\n<p>What were these syntax errors?  There are two cases where a temp that needs to be moved is declared within an optimized control structure, so we were right not to bother handling this case.  The others are stores into block arguments, something the old compiler allows but the new compiler only allows if one sets a preference (allowBlockArgumentAssignment).  Of these about half are short-cuts and half are cases where the block temp is being nilled because if compiled with the old compiler the temp would be at method level and could cause the system to hold onto the block temp&#8217;s value.  See e.g. WorldState&gt;&gt;alarmSortBlock:<\/p>\n<p><\/font><font color=\"#000000\"><i>WorldState methods for alarms<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>alarmSortBlock<\/b><font color=\"#000000\"><\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#3F3F3F\">answer<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#007F7F\">&quot;Please pardon the hackery below. Since the block provided by this method is retained elsewhere, it is possible that the block argument variables would retain references to objects that were no longer really needed. In one case, this feature resulted in doubling the size of a published project.&quot;<\/font><font color=\"#000000\"><\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">[ :<\/font><font color=\"#00007F\">alarm1<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">alarm2<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">answer<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">alarm1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scheduledTime<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&lt;<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">alarm2<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scheduledTime<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">alarm1<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#00007F\">alarm2<\/font><font color=\"#000000\"> <\/font><b>:=<\/b><font color=\"#000000\"> <\/font><font color=\"#7F0000\">nil<\/font><font color=\"#000000\">.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#3F3F3F\">answer<\/font><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<\/p>\n<p>Of course with closures none of this is necessary since the closure doesn&#8217;t hold onto its local variables, only the activation of the closure does, and the activation doesn&#8217;t persist beyond its invocation.  So the above becomes simply<\/p>\n<p><\/font><font color=\"#000000\"><i>WorldState methods for alarms<\/i><\/font><font color=\"#000000\"><br \/>\n<\/font><b>alarmSortBlock<\/b><font color=\"#000000\"><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#7F0000\">^<\/font><font color=\"#000000\">[ :<\/font><font color=\"#00007F\">alarm1<\/font><font color=\"#000000\"> :<\/font><font color=\"#00007F\">alarm2<\/font><font color=\"#000000\"> <\/font><font color=\"#7F7F7F\">|<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">alarm1<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scheduledTime<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">&lt;<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">alarm2<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">scheduledTime<\/font><font color=\"#000000\">]<\/p>\n<p>But these are changes we&#8217;re going to have to make manually.  At least the syntax errors allow us to spot them.<\/p>\n<p>So evaluating the counter above now answers<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>#(67702 10966 1481 18380 13763 8910 2241 1518)<\/p>\n<p>which is a healthy change from<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #(67701 10966 2430 18380 14843 9249 4828 2436)<\/p>\n<p>Let me list this properly so I don&#8217;t go insane:<\/p>\n<p><font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Methods:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>67702<br \/>\n<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>MethodsWithClosure:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10966<br \/>\n<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>MethodsWithIndirectTemps:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1481<br \/>\n<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>Closures:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;18380<br \/>\n<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>CopiedValues:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13763<br \/>\n<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>ClosuresWithCopiedValues:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  8910<br \/>\n<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>RemoteTemps:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  2241<br \/>\n<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font>ScopesWithRemoteTemps:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1518<\/p>\n<p>So out of 67702 methods 10966 (16.2%) create a closure, but only 1481 (2.2%) require remote temps.  This corresponds somewhat to the 1.7% of methods in VisualWorks 5i that used remote temps, but perhaps indicates a stylistic difference between the two systems because of closures.<\/p>\n<p>Of 18380 closures 8910 (48.5%) require copied values, and they average 13763 \/ 8910 = 1.5 copied values per copying closure, or 13763 \/ 18380 = 0.75 copied values per generic closure.  Of 13763 copied values 2241 (16.3%) are for remote temps, so 83.7% of copied values are read-only copies of arguments and temporaries.  I can&#8217;t easily measure how many closures require remote temps by scanning the bytecode.  I&#8217;ll leave that as an exercise for the reader \ud83d\ude09  But it should be approximately 1481 \/ 10966 * 18380 \/ 100 or 25% of all closures.<\/p>\n<p>I&#8217;ve responded to the figure of essentially half of all closures needing copied values by modifying the closure design to store copied values in indexable fields of the closure (something Paolo Bonzini asked about).  You&#8217;ll find the latest version of the bootstrap uses this representation for BlockClosure:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">Object <\/font><font color=\"#00007F\">variableSubclass:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">#BlockClosure<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">instanceVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;outerContext startpc numArgs&#8217;<\/font><\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">classVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">poolDictionaries:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">category:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;Kernel-Methods&#8217;<\/font><\/font><br \/>\nWhile this arrangement currently precludes adding instance variables to BlockClosure, or using subclasses of BlockClosure, in any new object representation in new versions of Cog, I will try and make determining the number of named instance variables cheap enough that the closure value primitives will be able to accept subclasses of BlockClosure with additional instance variables.<\/p>\n<p><H2><a href=\"http:\/\/jonimitchell.com\/musician\/song.cfm?id=CoolWater\">Cool, Clean Closures<\/a><\/H2><\/p>\n<p>There are a few other things we should measure, namely how often a block does an up-arrow return and how often a block references self or self&#8217;s instance variables, and how often bocks make no access to their enclosing environment at all.  To do either of these things the closure has to reference its enclosing context object.  [<em>This isn&#8217;t strictly correct; one could access self and its instance variables via a copied value, as does VisualWorks, but this is quite complex, and definitely against the spirit of DTSTTCPW.<\/em>]  Since the VM will evolve into one that doesn&#8217;t create contexts unless absolutely necessary, if a block doesn&#8217;t need to reference its enclosing context it wll be faster to create, since the enclosing context will not have to be created as well.  In other words, in a VM that optimizes contexts away the current closure design involves at least two allocations, one for the closure and one for the context.<\/p>\n<p>Blocks that don&#8217;t access their outer environment at all, blocks like alarmSortBlock above, which don&#8217;t need any copied values, don&#8217;t access self or its instance variables and don&#8217;t do up-arrow returns, so called &quot;clean blocks&quot; clearly don&#8217;t need to have a context instantiated,  but my current design requires a context because the closure accesses the method through the context.  VisualWorks calls these self-contained blocks &quot;clean&quot; blocks, and, because they make no reference to the outside environment the VisualWorks compiler can create them at compile time.  Were we to modify the closure value primitives suitably we could do the same thing.  One implementation would be to make the outerContext instance variable do double duty as either an outer context or a method, e.g.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">Object <\/font><font color=\"#00007F\">variableSubclass:<\/font><font color=\"#000000\"> <\/font><font color=\"#00007F\">#BlockClosure<\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">instanceVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;methodOrOuterContext startpc numArgs&#8217;<\/font><\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">classVariableNames:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">poolDictionaries:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8221;<\/font><\/font><br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"#000000\">\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font color=\"#00007F\">category:<\/font><font color=\"#000000\"> <\/font><font color=\"#7F007F\"><font size=\"0.9\" face=\"'Accuny'\">&#8216;Kernel-Methods&#8217;<\/font><\/font><br \/>\nand modify the primitiveClosureValue methods to distinguish between a context or a compiled method (easy, sicne both contexts and methdos have a special unique field value in their object header) and substitute nil as the receiver in the block&#8217;s activation when activating a block whose methodOrOuterContext instance variable holds a method.<\/p>\n<p>All this is easy to do and is probably worth-while for performance but it does have the down side that clean blocks don&#8217;t identify themselves properly in the debugger since they don&#8217;t have an outer context to refer to.  In the VisualWorks debugger when you&#8217;re in a clean block you can&#8217;t see the values of any variables in the outer context, because the clean block isn&#8217;t created within any specific method activation.  You can see only in which method the block is defined.  So for the moment I&#8217;ve deferred implementing this optimization.  In any case the VM modifications are small.  Most of the work is in the bytecode compiler and this could easily be a system preference so that the compiler would only produce clean blocks if so desired by the more power-hungry programmer.<\/p>\n<p>OK, let&#8217;s measure those clean vs non-clean statisics.  Because this is Cinema Verite and not a documentary I&#8217;m going to allow myself a short-cut.  I&#8217;m writing this last section a long time after the earlier measurements.  In the interim I&#8217;ve made some changes to the compiler (mostly fixes to the decompiler) and have changed the closure representation of copied values as described.  So these measurements won&#8217;t match exactly with those above but you&#8217;ll see they&#8217;re really close.  Hey, if a work of genius like <a href=\"http:\/\/www.imdb.com\/title\/tt0108598\/goofs\">The Wrong Trousers can survive a few continuity glitches<\/a> then so can a ropey old blog like this! [<em>um, The Wrong trowsers can survive continuity glitches precisely because it is a work of genius.  Your ropey old blog, on the other hand, could do well to pull its socks up and show a little humility.<\/em> ed.]<\/p>\n<p>Here&#8217;s the workspace script that also collect the additional measurements.<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| numMethods numMethodsWithClosure numMethodsWithIndirectTemps<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numClosures numClosuresWithCopiedValues numCopiedValues<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numRemoteTemps numScopesWithRemoteTemps<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; upArrowReturns usesSelfs upArrowReturnAndUsesSelfs numClean |<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numMethods := numMethodsWithClosure := numMethodsWithIndirectTemps :=<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numClosures := numClosuresWithCopiedValues := numCopiedValues :=<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numRemoteTemps := numScopesWithRemoteTemps :=<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upArrowReturns := usesSelfs := upArrowReturnAndUsesSelfs := numClean := 0.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SystemNavigation default allSelect:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:m| | s hasBlock hasIndirectTemps blkPc blkSz doesUAR usesSelf hasCopied |<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasBlock := hasIndirectTemps := false.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s := InstructionStream on: m.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s scanFor:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:b|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b = 143 &quot;closure creation&quot; ifTrue:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[hasBlock := true.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numClosures := numClosures + 1.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s followingByte &gt;= 16 ifTrue:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[numClosuresWithCopiedValues := numClosuresWithCopiedValues + 1.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numCopiedValues := numCopiedValues + (s followingByte &gt;&gt; 4)]].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(b = 138 &quot;indirect temp vector creation&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and: [s followingByte &lt;= 127]) ifTrue:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[hasIndirectTemps := true.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numScopesWithRemoteTemps := numScopesWithRemoteTemps + 1.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; numRemoteTemps := numRemoteTemps + s followingByte].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numMethods := numMethods  + 1.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasBlock ifTrue:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[numMethodsWithClosure := numMethodsWithClosure + 1.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s pc: m initialPC; scanFor: [:b| b = 143].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blkSz := s interpretNextInstructionFor: BlockStartLocator new.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blkPc := s pc.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doesUAR := usesSelf := false.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hasCopied := s followingByte &gt;= 16.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s scanFor:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:b|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s pc &gt;= (blkPc + blkSz)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifTrue: [true]<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifFalse:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[doesUAR := doesUAR or: [s willReturn and: [s willBlockReturn not]].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usesSelf := usesSelf or: [b = 112 &quot;pushSelf&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or: [b &lt; 16 &quot;pushInstVar&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or: [(b = 128 and: [s followingByte &lt;= 63]) &quot;pushInstVar&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or: [(b between: 96 and: 96 + 7) &quot;storePopInstVar&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or: [(b = 130 and: [s followingByte &lt;= 63]) &quot;storePopInstVar&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or: [(b = 129 and: [s followingByte &lt;= 63]) &quot;storeInstVar&quot;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or: [b = 132 and: [s followingByte = 160]]]]]]]].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false]].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doesUAR ifTrue:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[upArrowReturns := upArrowReturns + 1].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usesSelf ifTrue:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[usesSelfs := usesSelfs + 1].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (doesUAR and: [usesSelf]) ifTrue:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[upArrowReturnAndUsesSelfs := upArrowReturnAndUsesSelfs + 1].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (doesUAR or: [usesSelf or: [hasCopied]]) ifFalse:<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[numClean := numClean + 1]].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hasIndirectTemps ifTrue: [numMethodsWithIndirectTemps := numMethodsWithIndirectTemps + 1].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false].<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ {&#8216;Methods&#8217;. numMethods}. {&#8216;MethodsWithClosure&#8217;. numMethodsWithClosure}. {&#8216;MethodsWithIndirectTemps&#8217;. numMethodsWithIndirectTemps}.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   {&#8216;Closures&#8217;. numClosures}. {&#8216;CopiedValues&#8217;. numCopiedValues}. {&#8216;ClosuresWithCopiedValues&#8217;. numClosuresWithCopiedValues}.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   {&#8216;RemoteTemps&#8217;. numRemoteTemps}. {&#8216;ScopesWithRemoteTemps&#8217;. numScopesWithRemoteTemps}.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   {&#8216;UpArrowReturns&#8217;. upArrowReturns}. {&#8216;ReferencesSelf&#8217;. usesSelfs}. {&#8216;Both&#8217;. upArrowReturnAndUsesSelfs}.<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   {&#8216;Clean&#8217;. numClean} }<\/p>\n<p>which produces<\/p>\n<p>\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Methods:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;67805<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodsWithClosure:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11022<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodsWithIndirectTemps:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1545<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Closures:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;18437<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CopiedValues:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13860<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClosuresWithCopiedValues:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  8933<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RemoteTemps:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  2366<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ScopesWithRemoteTemps:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1578<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UpArrowReturns:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1025<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReferencesSelf:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  4049<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Both:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    346<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clean:\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    188<\/p>\n<p>Clearly clean blocks are too rare to bother with; only 1% are clean.  20% access self.  5.6% of closures use ^-return.  1.9% do both.  So it could be worth-while considering an implementation where closures can hold onto their receiver independently of the outerContext, because a whopping 94.4% of closures don&#8217;t need their outer context.  I&#8217;m a bit peeved because in my earliest sketches I had an explicit receiver slot in BlockClosure and I took it out thinking that it was simpler to access receiver and method though the outer context.  The greast thing about software is that nothing is set in stone so there will be opportunity to revisit this later. <\/p>\n<p>After far too long a break the next posts will describe the stack interpreter which, inside the VM, invisibly maps contexts to stack frames.<\/p>\n<div class=\"pdf24Plugin-cp\"> \t<form name=\"pdf24Form0\" method=\"post\" action=\"https:\/\/doc2pdf.pdf24.org\/wordpress.php\" target=\"pdf24PopWin\" onsubmit=\"var pdf24Win = window.open('about:blank', 'pdf24PopWin', 'resizable=yes,scrollbars=yes,width=600,height=250,left='+(screen.width\/2-300)+',top='+(screen.height\/3-125)+''); pdf24Win.focus(); if(typeof pdf24OnCreatePDF === 'function'){void(pdf24OnCreatePDF(this,pdf24Win));}\"> \t\t<input type=\"hidden\" name=\"blogCharset\" value=\"Cw1x07UAAA==\" \/><input type=\"hidden\" name=\"blogPosts\" value=\"MwQA\" \/><input type=\"hidden\" name=\"blogUrl\" value=\"yygpKbDS1y8vL9fLzSxKzEtJTAIRevlF6frJ+elJOfnpAA==\" \/><input type=\"hidden\" name=\"blogName\" value=\"c85PV3DKyU8HAA==\" \/><input type=\"hidden\" name=\"blogValueEncoding\" value=\"gzdeflate base64\" \/><input type=\"hidden\" name=\"postId_0\" value=\"MzQBAA==\" \/><input type=\"hidden\" name=\"postTitle_0\" value=\"DcjBDcAwCAPAVViIISziqkgJSHWyf3PPc8aLSnGY98gnAzu7ZKg7qeCcKPaROaHzcbG2fg==\" \/><input type=\"hidden\" name=\"postLink_0\" value=\"FcsxDoAgDADAF2HFOBh\/U6FiE9oaiuH76nLbXb3fO8AYYxJuqBmPn8lagWTlqFZgmecNYoS4glC6UNkpB7HMJyfsbOrhS0HYE9WKSvZ4EEJ\/Gglpd3gB\" \/><input type=\"hidden\" name=\"postAuthor_0\" value=\"S0zJzcwDAA==\" \/><input type=\"hidden\" name=\"postDateTime_0\" value=\"MzIwsNA1NNQ1NFEwNLUyNLQyNQIA\" \/><input type=\"hidden\" name=\"postContent_0\" value=\"7b3bettItiZ43f0UUa6uKqlLliXb6XTShxpZae\/UV+lDp1yZ059Htb8gECQjBSCYCEA0c3vXxdzNG8xc9Sv2I8xaKwIgKEskiAMJUrEPaZHEIWLFihXr+K\/n45f\/U6UsFtxnyUiwgOuEjRX8h0c+O2Mej1gigoBNVfrnPz59ePzts1iwNBrx8XjKJjIZ0W1a\/i6YGtDfsQhVIuCucMz600R4yhf60D5rJHiMz2LDOA37gYyGcA9PmEzYiGs2VAlLFBulMYxCxAMVhzzyxCFjf\/4tVcmzV2mC79Bi9mTGY3wnD4Ipi\/FvGbFxzL1EesLchK8OuAzzp3yI1RVcl5hPBzQezaeH9uczGIK6ZJwF9E9ElIEH48MDxX2dzdTnIVBnBJPQ1x51QLfBZZ5KYxjtHPViORwlh88fjF\/+1+fjlz+KxP6kWSi4TuGKkZrAzYmI7GS9WI1ZOi5ODSZzZu8LWZxGkSElXu0rmWi8lrNBLPQICNNXKtFJDIsmfHYaq99SkbDjw6PD46dMhnyIj0M+wCUSVzxIOa4gPQ2eA6OPmZpEs8eYm5gczM9MK7jcg1UVfj6\/\/\/LnqK\/Hz8r\/91SFYxkI\/61IRsqHB+oEeeBUpVHCnnz75Juj7NHv\/36Ar5wAwTgs6G+phFHDpMUEKIk3A9uxcxgRzQXWgh4cw0LGPBoC6xDr4U8DGQPLZzwFfA0c38dnjVM9eicmJ3DHlKkx\/SoHBYYocLuluXk1jgqpqfE\/wMeWmmaM8F\/vMgCGY+\/oZjMMCbw8HseKeyM2UZElawKDQxaEFyjgbwnD9gXwcyyINtLHYfYD5V2a5+CgVARrzj1PaA1X4S6FkUVCJ\/CJLtUHrJ\/SrpO46WC4IlLpcAQj+sWOGymKFAukxxMVaaAOjCRIRIycpuBumkVGaTYZSRh3LJI0hrtFMMA9kK8eu4Kh834gWCSDA5bEKYwyZgMeAFG4zjl3Nmta0oL8wIHB1QrmAbMAIWEGQyPBJUw1SaC5BUO6eyAbEtoc6TigB32kd9HzjewaAmcDKTTsCRUZflBBoCZ4F47gwE5O0jhZBJILXzxgIhChiMxmw1+QsabVOX\/vfApLFL7jV3IIY4ax+GLA0wAWNQjO4WVe0nvej9mDl\/915WevfMOnXvhlbS8Lgbb\/g9gpUsna3goyusc+7YWMJz0GQ4hkInnw4XSfvWDHj55ufBzsr+x4n\/05SJ7BeB5+e3FxsW9O2oePHz69JgQHKR6A+AN7YKQkbKs3cFwlMBl2dHj06Jun3x09OX70+Jtj+usA99+jwyd\/QkbONrGnooQDMxelGuyYk3g4+gPsQJAv+Vk1VCQHor9lA\/kF1QS4UdDuyEXr7MzAA\/7XFOWsgJMNziwjLzUxvbkBzjiQ8jIANpjgjvbZqyAVr\/AcNnILdiJJXnhVUSKi0IPbregNxJUI6ASm7zM5CGJUxrCHgE6DWIWZXDQPxpNCzb\/fCHkcNQ04kEkS4HnowZaXKDxUJonNM+7Df3hgjwIYjf2SBqM9NRZG9kxB1vr4pr5ACubCfA8HDJ\/s8UfjH4M8Tab3xyBzQXbv3zDH6QQVF\/Y+VzXMqPEsATkOny3B7H12OBntpnjhOI1B4xOGg4jo5vywMzCvQhkIRDAnBqmLfQHiFZ4fA11ElMtVPVJp4M\/kOByj3giPWx8v4ZeCpLL4zOFoEdeErRnjs4Jmk2r8Hj8+\/OYZUTzmE6OQcHwtSUn4OgbpeMVBQfAFMHBwyDKufC5fnsLzYdnxyozPaQggx0VMZ8PzB\/Kl3e3P+y\/hEXD5W\/659\/xB\/+XzAewJIG6g4hf3\/nhE\/3PvJTwfv7\/h12\/f3HvJXyHhbr0EH1BVuNzy0G\/f4HuNFvo6U+DMMIyWLlCryDV0TwADx\/lezs8xcxLDthmm+MVh1VGeRHpCQkBkzyaSm2PUDivTMzWuH145Ar0YdBQGqiVIwNQXlV9\/hrshX3Tg9QQ0cquaRMgdwKtSZ1spRH3c6BbIrCBbYAuY0\/bQUHTxSubHveHSmmuJK4lr+WXhS2\/mv0dv8H\/vvQz559eG7PUe8jOskKjxCFjhCneXo0CjG+jbN+ahqLdWGHG2733VW3z3p97C+3GTdo5gzVC4Aa7KqPTiRSUamV9h+3eDSk1JfkMTOXiDplSvElmRNvdeftpSujQnAZCQe80ItP7L3osWtYfFD8CDtSIrLJFDGZX2azz8z8MlByprW4DIwce4GoGy+d+ZvdK48F9JL6mzi5aepYdumRrZYlUWaZk8zfbZxcIT62I3T\/KqwmnZQV60EY3D29pmZYycHT\/+nYTabYGzBbpVOam28zwxL6eK8THr14wUm\/ApOo2Gohi9yxxNdPVExZd6h0iF3jN0el\/KyMSfZ05NdF2\/Rbd6gs4zcSXiKVORKOO6ujhsxYvyz\/ZdV7OgA0UrjYfZxFD7UxaqK3QbX6E3Xn3th4cvc1ninL7O6VvL6dvMxtl+n++KTsiGfOW777ZlrXFMF73zztnsnM3O2eyczc7Z7JzNzpXjnM3O2eyczU5COQnlnM3O2eyczc7Z3Jqz2TqC59zCWCIzEbC8aeCzfiz4JeU\/D6i2x+Q04xfoTbbJxs6P7PzId9mP7JzA2+YE3tEsb+dHdn5k50d2fmTnR3Z+ZOelcX5k50d2fmQnoZyEcn5k50d2fmTnR95M0rJ1KwuPI1pRJkAyBzNhIyECkSGHTAidAj5bz2ug1Phw8SjZLwaRTRIkUYjAUUEBXyyBxyKsCAGbeYHSCIaF4FL2e+kjosZgan2t1xFWcqiS6zAk6CgnzBBCD5kHDsnhkH4SV1IQqgrCmlxJlWqDNGcxl05hPAh+dprDdOGIEk0DxR94xIOplgThBCP72SJKvSMUOIJzQlwSGQ3PMclb0\/2ITjL75is0KiQJ9y4tdpqM4QkD2LFwiZ5BYRmX\/hw1cqSthSShMUWKhqURbgdHI\/T1a82bMlirMUcUFwtUcpCh4BkAs2uEyLDpIoJTkZG4jr+nr+F5JTJETC2LqmKkEIFo8b4ygDa0inNDMHO15J09uXdjxMRBXjnIqyYhr9Y8ni+W6VGksC\/dPYkLo+y9APKZz6cB19ps3tj8HYnJXfYXdPAGWh3keFADz1Uae+JNrMI3cN65herUDR5uoN783jrcCokgIlQSrDZ1YlWF71G57u7w9wrjRyUNdLt3PBQgk0l3ffKsoHxZbXbfYBUbneSjwdyLpuegROjBtLdDu+lTL\/myQ9PZ20tuXuI55T1b5LssFeXgnQxAK0Gw3Is7TgiVGFr0Yv2F7cWacKZTMPz+Lqa9otZGluc+6tQXu8Q8Vl++ZevMWblu67i9tqHNOcHNOSm1Oc3\/GDzjzEN0\/M3Rt4g2jMjiImFTwWMDK8tOfk+Ex96JCXsjY8E8gcd+ROi1IxH4GcC6UQnQywH3+Zz9LKMraVDMBeUKwiVvVcTZj1JzuATbCUSKhfxXBApX0SCQXoJOExwJM3jsPBYRQgZ\/e3T8DXpI4N8nGd73q+nvPErQ8eLxQEQ+jff7Aog5tgMgyOPn8mWgrgQCzbLnnI1iMXhxb5Qk496DByI6nMhLORa+5IcqHj7ATw9wCPde\/pL98PwBf\/k3wotnYeqNmBYipORH8sxgOwYRCUMI8hHBCGkSr04PGA9gBdLhKEfKL0zLl9qDgaELa+aVBupyEDToePRVKHSCGPD4dBHHIkGaoxeqr1Ii1js1sSjDE\/MfGOfJCJaPRNGjo2fZ+p5jewA24J71FhJaNdHq+JkZ7Qv23cNjQqaGfzMg68MjdE4cPv6THXxUHH8ghiD7QsxYJQ8aEuCaB8w0jeAJXAv3k\/sN\/oJp0ivn3Fz0CCC3AYxXTAQylJFthsDSKBKIJc2tu7SP8NoIqV9Aqf9YxMjGFhIJAcWbR1I7guEod4l+EDGsnM56BQzkZ9sGIE0UTEliOul05sPjAepIU9sQYJR1HZiN3OBeZEuSYdwrc4NZIvgUKoN8H8IHuPYHuDYE1TmnBPo1TeCCnpxhgovPnLCzwZIwG\/lv85DP6MAGsk7NCz87GHznE9wFnyD7gg0fXhn0+Q4bYrNB9l6woy7b+megwsYphQHPE5BoIYgUWPB96pXyRsW7Zbz3d8l476NIePyI2Xwf9mmO62YfYMde7FLQfzYzTATt9uRmY4W1cgGUhgIozhbcjviJo6ILn7jwiQufuPCJC584l64Ln7jwidtrOxs+uRY\/efL4m+se6MeP\/oTuYMHjYMpGPBhk8AUmfjBRcTK6PxnJwHiGMW6CXR6ZT211s5xUX\/2NsTc2xpK5iWXEfksxNqCir3zN1FdVJLPWkoW+gyyCzadva1ZrFJJgekA+c+OmxhavNgd6LsfWJN8aFzF1e\/T9zK+d9cS9\/9WVGQFk1sIyMcgNWatbkfXCtTn5uXt7HKs+75skZ2yuSAYi0mSiSKxgT0QKmEiKirwS2JtXszNDET2NEv6ZYCoChIzAN9uu1SMRUJyi2Al6DFPmuGBJ5rdHZA0DSdEXQwzOUHqzCQzESiEtVRrRcoXYZVGDImt7cmOD6twdf3Pm+Pv+r5jjvLAIRKd9o9bXKCT5I6qaJGhfw\/KqeJ0wJ7ZUzeaA5+njyI11ymrNt7gPX9w7OvzuHga44M+\/nHheGk3\/cu8lwVwc56Na+4xp0e7OdMdKBd9L2ipk8Oz22oLAGqp42vokQU06VcP7514sx0mmJF2b9kIJ81y+vLb357qxanLmZIFSash6HaJ\/ID+TY\/NHbLNLJutZdA4XB4K+Nv3i9e1Fdi2iJr2lkOpNLdpvqgv5usdu1aHZh2ZNDlixyYGM5mPb9EIK5kazGG7lF+9lVUwUsJ6LAEvT\/hnDtjzAc44wpMI0SCS2\/DUjxd7Een8TEEmNoAXBqetLHzaf5brz1Buh4tXb0oLkJeBGYaewi7J780jH9sMPNYv\/tSJhqtQmZ\/voaFsLfxeWM+8tnNXXAeyFm0dFdTTmcOFA62Da5OH2u4yhUA5IarF07O+khFldJ6hApJLgaTWw044fP+og6tJaJXX90zIjx1\/rLEQl0JzdA5Bof5UqgpUtXqitR\/ponewvWqC5hbzYLAxmWYjUpq0O4xNYTNXectdXnQfMvO91nlKIsnfSkKI88o\/qLVUoVH4KGfbLSXX3zLGVyVsHLGoZr5W0DWyafVvIrIv3S+IU6oqYr9l5sleBviU14mIEfQ1e55vyWha52zMK7Du002pIjhiMrqHJ2BwAR\/xqxDfJAHXoX0Puxs2rJ0dHr0+WC6RY15JIs3SJOo62kqreYi\/HAqRGQ4g6HjusClu09hc18K9339FnwTQjvw13zq4duzflxLlj153TbrW28WCfbOpgn7iDvf2DfTddsiu6k6oGsW+3pRvlH0xwHS9zqLzKppwBJUfDn6WmXKnF7CMmNQ7lxc\/GMqEd469GMoAwN7dGoOTiWtLcL8IqWUHAuM\/HBiRcU7rdDJ5XRlfq0iQDS0w2S3iUgS1TkpVWochSpcXnJOaEKZ4Dh\/gqwlhmjTQ9k6eNGXoZ\/G8hUW9RVlS\/hug2mB8rgOD3Taii2jt\/S7nfjRaM+UjM4hJDUEjkwGSfHxSLA4D0lZP5Zj7jLH8ReAiR223q4hwOTDGhv+Yb51ImZz0ev1p1mBy2hES07rQURnzVcX2FPLM4HmZgaeqcCjNAm04o4luZBljrfM4eUi9ssg3NDJfnti1KNyulrxvwohb04K5QcOMupDrLw5M28hDLGXIWyqk1LbVW7sWjp7vNdIu8B2WM+F1kuk3luzXhLSAotDoje\/jt7jJ8RuCbGf71ydPTEgxfzexop\/dWuHAi+7u7ktkUPzWq\/dXJrQlreyFPlyekLS5unIFT1VGzbvEXOcf\/HYhFGAitDR3KX8N2OT68o3xYG0tgHdJ4W4MnjcQsboVC20mSrewBqqJJoG76+uT27M0GV2\/dGSNfY8wtyhfJCNFqaKqZTOk7w9C3KO8zVMC7nD+WMazLa29PLXizIBZfxnm9y3nt5Sq+XWp10\/lyi+tZMpcaBiZrZAO4ZWshca6JSqS4jYK9MklHm8yIb1QNvT1xrlxeetWA4bJt98ZlxNd1tBsifrojB\/aqGfHuwHYnvFvn3VMJJptSCSZOJWhfJbhYaPxfLAxUXiwMSF+0kOFfHwSsDMDRloK4fdpgmu+2CdWWshTaCAoucVfq8yQmBFm3qptd1bIhNrcYzZ69jp6NpXx3C\/Fsof4w4IEWyyqOTOHPiWkcQM0dOLuyBWbUukGbKhNTURRhWUmh9wIljrAkFrMaog\/4FXJkqTK1RhoI3F4jd1d6CRw\/eZbXRpZzRLjmAq65wLY3F1iIDb\/4IvlyQWHtzdWNhbLGRfSepYLMduSaGhBkgv+fC8dZHFajpKJjoxKl6M78LZXLNPmrUvXhVWm+N6Mc24Tb8esFLJt39D72RSz8bPmWFTHengtcRvvZX7JIvv8j17VKQEquM8v4++0U9JhYJyyUcDhfCmz0JCMGp1QaUrsn0GSo9WVWNh0E2LdipvacWfmDHegToKTGllAS+0a9Sk1VdqYyYWMnTXWydKc+sJ278DVqnMgQpB42+si6XWXvklEgI\/hlj9PQ8mbatmcVvQP7UYElHNuL9cV+r3IjjLsO5FCytG7HYR5cBGJ7bNvisV0jv\/HXihiuTUAO9aMWIIcWPrrczblgdkh6u7dvSoDV2EP0lUjgcMfemGrCgkLnxaGw0CsJj3PXhzmXB7ECpSDRWbOymEdDcWCuBst37mv61hf9dDiEQzzVqAMoav94n\/o\/5sq0ab5proSDYGtPeaLX+8FKKC2dRmwSkQcPiOuAaBM\/\/ITssLTPTh1o9SaipqQzl9s6xT6lwmLVXLfyqknA68hDoPCwsl3\/zNh46M91Q+VmMyNYE+z1MzZBwCTYiPm4q+42u9dhsFOMWvXYMTy2x+Z3gXk2qPhzwgBer4WAjV\/o04sfYIAnkY9fPTp6xthzEb58rpNYRcOXr4CH\/vD8gf30\/AH8xFgOGRULFoEUw0a0Pp+iTQGvwFcO0iSFH\/cIPiiQSQKSZhyrIRg1Ghv2oqHSFyJiIffFPrwfCOvZln7wf885G8Vi8OLeKEnGvQcPRHQ4kZdyLHzJD1U8fICfHpyCeRLyf78SsUzEvZfw8c+Ce2kinoWcXWV\/w4\/Zn88f8JewFFlz4VgECHaEFIAxjccCTKND9hGG\/\/Nb5sVcj+C6EY9hMVHyYq9f7KqbraDPnsuXpVZDviQW0PCGZEasJJ7aLsBJzEHI+2oSmcGcASGwETAYbvBGjsOBFaQOjvgFHA0evFYLFk4Z3kRgQPAKsEBVLEGY84ABVTSa4PPti4EjXk0TgfLltZEy+H40+dLEnBzoMCMQJta3F7JAqUuYbSAvzQrNgLzky+tPK3pq1Jhuhydm7pq8oya+5T39bGrdSUj1azQMUHFZ0Y8seRIP0xAWQ1d3AsVDvT6\/aB3d9dEb\/F97THYOYUiXaGNXxtH16dqDlhzxv6DIaLOFXplufrh3TuKYT5ca33VMqSePa6TwXBw2yscVeHHJQpbhn7FCj7GK2omm1vCRf2oTJnIsYhDCYa92LxZVRxO9Lm2r+7eWCdzKC8hYc1y0BD4HtabjZ60K8Y507DIV3CsK7YV077VMtszGAM0OVJcIlLAYu0ijI5186IRsamYFWnR8RRqRUWzTGAYpUMcjZQsUX9LbIibi2GBLwlVDUC9jnmSRAFKNZv52A\/qIt6W46zTeDgaF0LD9slsstTKCwB+gb+O18OZfyM2Pbv0cnRU\/WY2fxk5jwad6Ko5hXzOJOuO5gpmGypcDSTPNVcVEXQ\/cObVti9S27H5goWpIoU7vc3qf0\/s2A\/HtdLcmuG0V0bcudtu8gnjYpshej7K2TlttBWbKXcERKVKg\/vE4mKIuaTRAW8dpvJxAqeQrHTMWoQj7Itf4clUPdTktg2BKjsSQ4jjw1UQEweyigo4Iet\/vIlak7mlQCWEYBsmcokhmLviS7F56rKfSwI6cB1qhJso40yEPMB3EPhkde8ajB\/+gz1ZFNEdh3X0zxzKooSP0JOZ+RJyEuIJHDZV1fPYNURJ4o3Ucm7f0WlU9QRM\/3y3t02lTO6pNtS1zs+kd3UkdaWVBsFNqUjkfZWOaT54mmXojFklPxHnAkdm\/xGfMYTNHoUzsMUU5kHAOwcmo4ik5L9KxPe+wOYiN0yUmbGdDnkMe9\/kQnSuBWV8T4oTTSwXmvjPGw4ObgnLcu8TTiaJxlIGR0okd0bfyWkjOhBApmhhOKWrsGdDC\/NSD05ajTwjfGtnrZBhiJDMRcHKOY+EJQZmbeeal6TOSTATHl5pPeRD8ox1TTh1KDvnexnhNVPotH5vsEN7XOCMi1xmGZ2Plp54ZsIzgAdyG\/bL7zdN8ORiIGAmTH95aJOhnOvn6TWykAl+DCgDP5Hl48WQYgYYjvbdzjWJMPopMilHHvspazAiT9mLh\/ICeWNWBl\/pSjwOQ8NcD2lbTYiGMAu4ce+TwKibDoLoyy33JnW9pTLMTn8cYkTYK0I\/SNjgSn6VOzILAqIkR4e2eZTIcnh0ZaVfmbeJzgtuf8RiHF8urbGF80nU4NlTiCXA+LHfB4ZdHZ0eJyp5F3jwRzS3LjNhZ5U\/+lllzHiIDH6D\/kn7MZlsYMRDQ0jL70e7ZcskOhTDy3DoAjTwOS2tGc\/s5fQtjUCwetU1UTq9FlIEaH8nzauLLWUOpEfdNQpQRTxZyX2rD2pSCYHKx7YCTzP9qLhibfXCNPMYdOgHiV8\/O6MiBbcdvVO4sX4EMD2D4PNEssxXIk5ynrACB0QVua+9icSVVqkFUzSh4aiSVb9YQKKZ0fh\/o\/T4JSaBxOE6CXGQLn0h73RGeSxhjD6Ce79NCGIsGhkgcTdIsAF6kjaOpoxjyoZ0dPi0jSemsjCLTfnViEFemke0MhfyXUla+b7322Zyu0SKjAt2FWz0QJOdh\/4sJXJ6Ob35dbjdhsSPl8Q+y1Rgbr\/1srJSTQgcfEOo9nKfFwwEEEAohzgYC8wu1RmoZ2gZgkMI6k1xCXsC7I3GQNb8yySSjtB9L3OlgMMKZMeJXdoPS3cgkPOAxVTQMYvFbCpSZYs6OObUHZAqOYPl\/TWH7eSOUwj61h8NDdJiL7DzFxqbWFJZazrKTeBCinQzKAnYAM4Zm\/iOOth8oBeKAMmAOQLaFoI394Q942Cs6dbOBgQCmDlv4BVmsaFDzgcB\/ccQhv6SDCY84MiZMRZYRmedoAic8uCTK4m0HQE7KYcJcL3MQJNMxLOdIeJciT6WyCg0eQv0gFff7Sl3evHl40oPDsJfJK1\/Bm2EK5oHZFHCr4ATMuzE0JCjRDOM6RDl+7eE5qfKWJGyPhADcBMsJlIW\/QfRjCeW+8QGAkgIsF7OPMoSZ0jGB2swto9dWVzkDFgl8NlUprOYfzHest5\/z5fu\/H8APMzVrkMa0PLDwIzVhekSuhwlK7c\/Emn\/LUsKwyCWrGabFxD0DOzHzLOjcgwBX4ehB7FxJECfXM5MoFQ2PDGSbCM7rD0hvXDl0xeBhzKk8eZbaVqJpYfbwNVQfz0\/nDpUcXw97YpYlqQ2Um\/raKF4fFWkurirZVSXvSFWysQXv\/13EkQhWZ+v5hOiVMzXLVdRmYrR6Ke00EZvqdvpm5snG098meBjiZOeElT11WpxeCjG2Gb5oouYefdNYFY60QqZuRs8WG43mAyjp4\/3q+rW1K7u50N5FAlaxP6tWupTyzx6uiwed69q5riu4rmdu6eue59wuwRo8EsImpKoFWIghXhaCbWUqHjjYAR5RCF2SYAmjkUPO3HJVKn+Xkfr3DzG\/8vm9l\/jhvvlAxShY0gHmdFZeQkbcLEycObGu1XKYpuxggcv7cK6AeT1lezKxVqGPXkGwi6eZPQ8mOHqA0bUb8IneByMvQJvaGuHoSkZLcoq3yIj78DLUqNFvA9dlA8Fu7nrMyalC3bjp2IRrwCIepAFcjRzNE\/SIUGibfKM890HKEAZ6aGqLbE0RlRL9INDIs24G44unVvKJDEXmZgR6EkFA8Q\/RfwoSLo+jWwcI++PDfE2NCw+TMM1\/wJT8CVf3GVqI9N2s8gYfPSuIxCM5JPcoOnstJMKsuYyt2TRGcuZVW93rdEirDu\/NkFGt5pHI2No0B2T6kwNlxgRWMfxk\/4XB\/BCGpuhHg2IH5F6AOzHnEzfVPTQ7+fXLjZNOYlWRZ4apZ9AV8AIgCFwOL\/6AHgSM6mNQhBIcbCLpdA5HIvOF7IHUG\/Gxzou8Zlus3EZ6y4cSTLx\/p5QJHd57ab9gP5kvaEPZt2GvKLtcggN75MAHSBY5jDRpeHba89Wzin6yYZxT4jUVWcCYvOzpFhd3\/pZbsH2s9l5av75hFM2D\/NzwktqZBOvrG79o9EvUih8FHyyfrWtZeYfL+i+rgVbnXrsbN7Bjpjvad9IcIpUN5UgG60zaLqdk38jhKwK+zR2XWSj3d3GfYk4ILroq0huoT+J8hoFwjhpY9UqVVZLWBbU06VfEffDLv4b8VDVetfYoQtH19k5h2slkPlfDLD9phwgAa4KTFKBS8Vy6QWVXHNokUmdmFCm0swwQkzBjsmrm0FfmBlL53Xam3DYzzcaSza2ogR+26P7bGFc0O9JrG3yJVN1ran\/f3EpI9WqBvSze9PvdIDjw6buax1dNp9mqqlSNnFuy1xE+8jwzd7uxCF0yvFa31LZH9GyVcKvRBK2rku+OtS\/buOC96Ix4K9Ffy0k4J+FKFwfddJZvUptrq\/xzWSzdSdR1S9T5xEdEyQN+z9I7EVFNU+wjjwksyjJ8Ll9eBygsekyyEgT\/K1z8HG+tLJZhf\/2+gLcYzCxE2cDM9wJuM1szeokrEVDYjHKgTQKvBVKvbJGbh2JmNIW9zEeNNMboV0ZgSr2lF1LgM6Js4Xov3usLSuY2vg6b+9qHBeRaZoVCPsa0oqGNSWK17jjIAnQe10Lvl\/ISVC1jaNWQ45EvfRDGluvOU2\/0Eai8tcd+r0Ins3pNO+vfG6Uh7XzdOWSYDaMJr0iYDmYubbj55WKF7CzSSZxSwnCbheOLmwjWb16qQYgtRVbefYWqfk\/j\/k5KmNV1ggpEKsepL+pYE48ftdzgd3Gy\/KfNS+r6p2V7KdLLejR3\/hxpaJs0uUp\/Hibt2d8XO3XgN0n2F63VD3TEt+kvcSv9lxUsCmPvL6ZYb3mVWp0HlO1z0VvSJ2hxH9wVDR2z0B3cPY1bb+gu0R8Vuk5a6+1R7hnF5Ga2kwbhyrSuomiU3RGrYD+21xpy8a5OnEq\/0IVWt11gnYgtFnH\/zGMsTPbXUcaKYC0yGpLnukxttmso2HaCyJK+ewmYbBeO+O2Fr9vrexjrFvoevj5ZLpBiXUsimSKov9fLtG+k8Vp\/QQs5Q4g6PsNIJa7zY809xiO\/DYfSrh27toTUHbvunHartfUH+2RTB\/vEHeztH+y76RRe0bfUfEfecod6I9yFBd7jZe6WvNjt1CA+wvH8s9SUy1Wp\/HjFIxuhs75xp0Cnz5l8z9QRu7H4taLvr4mjqh+1cFQtfHS5m9U4kSEiyzoLbPf2DRZyljxEuycGXWv7bra2b7YosZwMWfwuggHaMWWxkYTiEb+1MVOZvItZ608xA57O4Z2kgbJC0FnGY4R7thDcQTLrromZ6lNCb7RtNrHAuwAllSFp9REGUiQG094CdWMZ\/AB0QjXJwJro2RYnG+GJ8gTxZBQLwfJepP5cmbrtp0APmYUse67AwBUYuAIDV2DgCgxcgYErMHAFBq7AwBUYuAIDV2DgCgxcgYErMLijBQYNWB2uCGFNhpTL9Xe5\/i7X3+X6u1x\/F\/V0OYQuJdDl+rtcf5fr73L9Xa6\/O6fdarlcf5fr36mD3SX7u2T\/TSf7u1PA5fq7XH+X63+3c\/236wx1qf4u1d+l+rec6m+HaaqAij3A7V0lOjgzqSsnPVuPDT7+nIfCvEJhlv\/7Pp7ka1tTk9l9CuPA9PRwiqvCeBAwdF5x7Mh9xWPJ+4HQLEJHlmkizU1P7sKI18eGH6lr9DBSMYypMAJazONnmrLnYxUwdSViauGMzc9xPjgXnSWzVy0zWNc0v8BqnBkPop1m\/inkiTdiX9Y2lMJAei8YsQilbCCjnM2cnHp9PDBPDxhUgQ82PbYCtXz1i0xGZ5EvPvdY1q991jw8HDIde3mz88lkchjKmEc+7+N\/qOG5DPlQ6AfXinJ+AOl3+OtYDO\/BPBN4AhYKmdbrExVfYjmHimirYiKDLTURdOs9oIKpKZqlOFCVUsTex3BMCz8zVVW09x\/Eav+5bzuoTwR1vCcpmBUBHTDOxrHCzuZUeBSIz0xEKh2OUKJEAkRGtgeNNgHPOoPBShAy2PckmJqL8vIl6gMLtwCbHdBAJ8I6s+GOCY+o2kpMRR\/F1KxTp551ZXdFSK4IyRUhuSIkV4TkipBcEZIrQnJFSK4IyRUhuSIkV4TkipBcEZIrQnJFSLtQhBSJyXmJVb97Jp2rXXK1S652ydUuuZxoR3xXu+Rql1ztkqtdcrVLLtvSndPuYHe1S+5gb6tPyS47fddQ2LQ4oLzGfO2NFTa5egtX2NRoYdPtGvSuFzYtl9Nuo7kmJuuOnK4WsamTa1YzZzNUVyam0dtYqCy34tWm651kraQ0XTVGd618bOMqeZkytt1MYjxPYlDvflABTL+adleS1cXn5BR+EFGiey7q9mbZunwEen0vB4NXqVy+NH286HtqRDP9gFUdVHS2yY1dT7ItPkyWmRNOB6qhoaixiH7kfRGswzNMpygVG5VwC7ui2GRZh6sS5TNYeKQlFn9OxKw4a3aIYhHRZYT1YCPpjeaKmfAXIcbYBItKl5kHzxKRr1k6Zn1BTaNslVau5RWVrX7Fg2PljBdSavpr0Sb6RtL1qzsCV3lXjYkZiW5O+7Kvm2ln\/da0qkar8bKt9s8SKs8SclFBR8cUlmV5kjUcGs0agw0kIf4dJE3dp5xjLWvdh7yO\/IbQ1Gs8BqTs+8FJPNyBErdmF79OemPrwZyyx5s9YDfiSt10jmXDh\/\/C4F8diyjZisBYB8CHlrsduoIbVFENq4Ub1ETBZpdwg5o8terI8tXV21skhS8+vx\/Uya34b3XkHW1RmMJJ0luH0nHYoVN\/BWXtTjBKl9amtA7stnBDW7iW\/dJemW4XmbOyrZhzjH4djpPpLpWLrVK37qAdbneeuHDBEgaLxOfNyzkKHhw\/a03aLX77OE1OgqB+tK3EyffM8WFLfFjHwdYEG9Z2OG6AG9emB9WjyC5oQZtD7Snj39pa5egND7TTjmprR6wl0VwmK77zVmMTSOFrFOp3B2KpGePRV5tKYG8v6lIL7WPMlySOPVsuLj7U5vc65gRiodeZwe0kcChnHWM0ZzK0qiA7U2WrAsVdkv+7G1lpNrehmv7R7awPp3+0pH84KeSkUAcs+6aPb\/m72KgO1oQmuGPKUBMk+WuLQLolXH5lrjFFEuNY+amHFRIjwQYqCNQEE8x9ORj06rYtub2NWBvp9JvsMdaJ+SxqQHb8bekGZM3OZQE\/vnnTZP5+5afNNTS71tGMSfi\/H2UoPzL25yB5dnT\/CSKTM\/al1i5886apWVd+Wok2bi2WvrTY6q0Tw63SB25lTurI\/rm1r1xPcOCjHoUn2Bf4X8NY2793Ss64Uxto5Rv2zGplvJvPOIs2MZzrPiNxeMSyZK3tnOvq1WwkgSwYJWibhioMFOEe2yvu9cIlRM\/9i4uOiCjTOHaPJtLnWnrnYIqwUEZzmtrsp33gdWRxCYy9nas8myqt2A2rNftxH5bJar8fYjUEjUofMvZLVnas2EAGiYjvqzQhrVCG40B6MsmLjqfMqFMFrcF8YVonwhNGKvCRb2SMr05MobEVfq7MrUwhTiNFcOtGlC0UzZUCDqhfc1OmwM7ham1l27YWqxdrJaWfWbGG8Ak\/w7+qTrVctQq55WkK21Ck2Qy2qT3JsGlx4dz66syS1g2E7ZJlgD4C9BcY99BkJCJm8f3QQQTKA+oDVH+o2d5Ck0IuJsufeXhbsD1\/AtngCx+zX91d5Q5Id0C6A9IdkO6AbHaa1MS9TnQrqNUE8mgjJF2ekLwNOkfbaOsFjcReaedjrOk5q\/hrA5td0ZYhE3onjWZQCG7+\/X3si1j4Gbi5iurhXnYkkL9DaDbLcpq2EABwk8neW1qes1bl4K60rLpjBeHNwgq2p+U102m1ai6oaTpTq9tfPn7XbnVNhRXs5tV8ffL0tET7uM6oz0s4J5tOHdfEXavz3Baxmq3tpzWU6XHf\/5HrZA2cerFQyF5UsBbvno7i9mvzSkqZFnvOUbXC3YvF17Y4qsqJLXf8boH0XKTGd+40TRo\/Jhc7VbMo6OG13Ejz6SSixPRYMA7\/Lz4nMWdUQ6QL+fyUmJjnJnXEZepQFFwV43ZVMW49CALDkPqjo2eujNiVEW9nGfFK8cWTIJbDUXLAOFwTU0gROzb9wVW2ucq2O1bZNl\/F4erXXP3aGuvXNkHnhaVZribL1WSVrsnqsoyvUcaVV2Ru\/WFQp5Ztq4s0K5a0nSuGbTJxIwjuMzVgYir6INHRVRSImV41BuliUvJA80qDBNXJRIBaNRlx+I+wF14JNlQJ04oNeEx1cvYHUDnHsYzMffCUJOaR9mI5Nt\/E3LtEBAqqr8vz95\/3Xw7kZ+oA86PyeECpBWfROQwuEPT1W8oX07cnzTfamRFtDvLykxaJxupcxYQv4ECMQYcGiphENiDhlQgYtiulYj8VBVP81WSoVRyafSiQjR5jP1LkApV282bMlYQX0QtRJ+agzUei5ov3+sLjKfEBqOF6pNLAZ30Bh42WoG7DGyMgAifmmcCRy0LgFDkO7HuZx7XQ+5kSXqbRa6ea13o88qXPE2G57jz1Rh+BytsaFFjSiTNsrTtmnXujNKSdvwNNJJvNLF6RMFVqjcqFKQ+3LlVzWQUV\/ooqdpxSpvU5tdVdEo2N6njMwtYqnDQIsaWdBh1c\/HKPb9\/lCC6HRu7X4NQXdYDTHj+qFetfnl5cJZa3Vkld\/7RsD8HOIYg3v0ro6mkBarBbUKsb1Zial1JL4B07EZldFlNt2uowAKCLqdpb0sWYa13nAWWL0Hq1qiE2bUjVC7lnT6nTdjrfh2JyXmLVd1Lh+jjzgy1m6rhOHJ9cb71ancGX7alWMwlWRY4gkC38\/zKwEeuhYCOVrVoEy6sAl8xkEKR6tJPn+coSrU6j52aK3cyCbmPW0q77CBY3bstUuPYqEdYNthML7stoeI5hhDJwOxkF9l1GfLXyoHcyqIUsksSpuHDEr0h8ldSlf51CY91CumiZ0qhYN1C+83cx3bgitAjio36xT6Tq4OHsu\/pHrK6J\/DY8qLt27E5imbhj153TbrV24WCfbOpgn7iDvf2D\/eIOxkhW9O82j2BbroF6I7zHPU+MlzljXmUEyZD3ouHPUksEIawEwHfntMadP4TyLaNbRiJur564H7VWz3jLo0tiXBjYceHXkNNuo3V03wRcJ7uZZ7BafLNOZubSDOeG4VrVlQmB9NYQiHZbc4sMsWgNloRjiC3CwVW91rNMHD\/cFQFRIknMMcP2MIOIPNjb8cadT3YcO1bdUjorcnECFBaAxqc1n7KsDUGJMfQ2lGk4R8h2c+m2sYJqVhe7d57EMhr+oALYSwxIzhLxOTmFG0SU5E06dkGo7X2EiX0vB4NXqaTJ9vHf76UeB3z6ASvqDSyQOa6oND3nwP39u3xCqbGIfuR9EfRYodmXJkwmGwUtUyZ8kdUJv+LR8A8FC\/p1HKsYCJ\/2bXKt1Aw73akB66s08nWP3X+CRvYhYz+ko78xRshCk5EMsDZ9ahrb0XDyYnT50lbSZxXWAxWz\/\/5xIvjl\/VMVi\/sW+OmBzJES+i+HAp141VIMB1IE\/rvbAbBaqHCv4+F79Ab\/997LKx53LpF7odPknzXrwmcwIosfstdqcXrNk\/kaik8tchgMmhqPKMf5y6r4Tvpa3J60XSZ9dtM9oyx\/VgiMrbwZW\/U6tsu6fewSFg3bZLlyUTpWIzlhcdimnmzNRnDFg3QjcKY1Auf7OYJjRPg0HmhPBonG4hxHCv4ZpiEqlwxO5CIii4yaBRJZLDXcfnX7tWP7dcm+s5rtomdo0IIj\/\/3gJB5q1KJ\/FzFsOIM03vTmmpWK1THy8+HWqaZGG+T4Wd2o1uvI71ThfUk3S23EX2PwGj9AncckPMYEm5Ok18hKlGB38XmMEGTYTxP4SLN0zEJ1ReYgAuMa5Jc+9y4nPIafnzBvxGPuJSLWf2Dnqiutx1fcA3UK4epUAOfGR3aA1+qW+DocJ1MXFOhMC0ZWSYcyDExb\/\/3g1YJ00DLao1vwtfazqlqq2uCZUcP7kJ2d\/+3Lxs+shtj\/sGg8IdAnHmImkgMHVzpE8GYFZxt+hWcc76OT9LsjcnwKP\/d0plEiA8bZ+TRK+GfjXK2t\/PVfYs2pJgfqG9Tm6zlKO+zImY+PnER6AvSfjAQasRZT1RMSEeuJIvTVED5HjGZWBi+zE83N63iNE\/VvIqlxPwLbRSKu8YT+NBF1JjAd17k95J9r3K0GA12JfB0r9m+KReootMulyZJ2JxU5eYWSsyX+pwGe1IsDZ+sLMbca9Rhx\/SOcVDGvZK6WZ6z9BroDbtOiNSOqNuijjNLQMkZXUi1KaAa\/CIbHGJ3\/AxlrLCD+nAjQA7jnpTFPRDDtvDJQ70BrCs7wScv4n582v0OWzHHT0qIJT2Si6thxaxIh9XrS3QKHmLUBAQ55R9240FRD62DKfDGQERhn980e6b9czMx3Bwl9eSFpA1wRGJY4qQUGJ1vD937xYgM2WDnB2amEi06c93TYYxbZONWjHjUDewb\/jfweo6Xo0lm\/YW1iJfN+yam6Fij\/0uLm0C1ho80L2quKlpGOHGJi8xriXjWqrwGg+0n87VHFgMdMyqNwJ9m+QJyXg3WqfvqWA7dx0bKmZF15X\/IGfSQ86W3E4Z7nmXh\/rWE5HjpubcyxXjp0UYVba8ZXMm558KA9f5DjpcZ4aZVI1Aa56f\/6vxw37ZRkasWL\/LA1Z4jBsnPqWMf47vXJ09PbTZKSMu723N0mfOIvGvc7ZpNuy\/jInr8kAIpAqQvvv3BSt23vpBFLjtDVHBmObtXotjz14a50G7nYyc66XZlVZ0Li37qYeIWYuAtpu5D29oS0l+u1TjyWSYW0ZQY\/YL23xDwY03mN9YXHUw3fEbiLDMeB9GQSTBnXWg4xQSZRjCeUTCdM7Tj+eUwwPLhjWEGYMRBJn3ryC9Z9Pjp6dsECpcZU5oo5N6w\/rVXu2kVp46KjLjrqoqMuOuqioy466rjVRUcdL7noqIuOuuioi466G1x01EVHHfe76KiLjrroaCejo9YRS9Bjh4ydKzYRLBLG5zuQQSLi+4hkU\/AK+8ILeIxXEND4IFYhK3SeYjJifZWMGI\/DHKO+m1gya+q2WioWOcNabTEcuKUxuzrO9OQuhTgb6NquzyJfxsJLsBvdz\/Cviu94nWl5KAN38K5cK1iXX00Ikzontig32+tzHicu0reeGxir0xY+TmpV26p67qWglnvpqE6f4Eo1wost8aLOU6Zd6TKYSi9IfVGrkdQtq7vMIWAYp547owTcldvmG\/NQfCrTb\/fvQozrhEd9\/0eukxb4d7GfZbE3oVwe7d3R\/tw+bVr9K5eW487dle5eFu\/p1rlbR2y5Y3dr\/K5bcoomLRyTK2GL\/zKS3ojFQqdBgi2X2PGjb5hOPU9oPUgDgzeeYYif4lMYdRDC8HMhBE3P\/yiAGOIzdgrt0Rdv+Xgs4t4hY+8jxMnmWkXo5L0EulM+71yzUV8OBqzQwgMGw2HgIfaWwA8GWPMzwar\/qDwekAl+Fp3DIwJBX7+1kOfGv4qpxVqxM4ZIXfByGUyZwLY8PDGZx+aZvuinwyEMADOGtRDmSxhMdZT0GTng6eNkxCxVqOFI8po+sCKJih\/WJgRM0uYprAvQg8NSByKBv6hPF4wGiRcjkPxIxfJ3WGUeAAH7UzZKBdHqSsSJ9LJvAzkcJRGs3SH7hxbIOwiOJqaiD1dkPVjowWzIQ9PO01CaOq4eYPsvvMMbKWXw7O3VMsI0by+RVyKYZo1F10ujdyoRPXZGyeo6QCh+ZdrFwgzgK0u5A+Q24Cs9Uin81Ifpcm8EBMRp\/ZZK7xKhYJFCc5O4GTtyXVPbs5t6xrGPHubs+s23R\/\/H8dOjeVb91PPYF0ZNDn5IRc42Scwj\/UPCrs4TMdbm4ykfI1AbG8Z8+ov0YSOMzK+f2ZThU+jlec7ULXGbN2+6Tw7vYj\/j5I1w6Mrj7q6qYQhqOMOyhGGQXVBagGH2PIahzP\/Ovt1nHM6vRODh84B9u0Pa35CmOYwR\/nqnJ9qnifYDEIT\/nT2an+cjJxPakwm7Jgy+meedb3ZWGOzwROeEwfV5OmHghEFZYXB8jXmOd1cc7PRU5wTC1zN1IsGJhLIi4dHxNeXyeGdFwk5Pdd5g+GqmTYmEtVHsC+tzLT30BBmnTj3H0Jf1yUCDFpH5eN+rsf4DY2+n1D4T3Y6aRVxeIf6ESocjcvkJNlAqEIQp4SkfE4+19EXmpdaHjP0yy2XWgsfeiLx\/6Og0Tun7gbgSwVwiM\/WmBqJlHtFCYi4bxwokLzz3x9S7RAd2oQnoiGty28oY78zafSYjnpDHG0abajMSX7FfU52Qt\/KQfaDbMw8+Pcw4zk\/NNHpaJB84LF0c9bIAAA1SBJScSc7fvOuz+RRNgRYykTzIiXHAAsHz7tt2zBbTwzTIilR0P3PwJ+oSNr+lgPXf95U\/hanPj9d2V30HB9VHuodTS05tXLH0GGoA\/+0zdGBjW1o2Vloiu5lsc+DK\/ALuWxcukjLKJ4U0I+gRYAWcgBkProLACQdasQEnUmCierZmNqKEBBinCScGx8VHFBLel4FMpoc19\/Pz\/styIZDba08rj2A5HATl4he5N8\/bh2W3a2rYvw9kI+ZUEYK+JMwks1ccmn0o7lB8jP1IoXgM8sztDHqhh9EM4LZI1HzxXgZkQ0w0c\/xjtInaw8JbfMEp\/jGRIObCNEjkOLDvhX0Km2v\/sEyvmLode9uAWQAx40ufJ1Z+6PPUG30cLQNf6LIaubhso\/EGuk3cG6Uh7Xy9\/R1km+1ovCJh6sCVHO0k9OPewlmtpRPT4q3XBEJdqb5Ed6G1Wd26gr4rKyCdoAKR1oD39fhRy01VWaV8zDVK6vqn5WIEhJILsZsQwg1tkyZXqS5CylbAfm5UY2peSi1uityN4u1llXtNWx3GibGYqoufQBmbdR5Qtl69V6twctOGVL0k9ewpZNhXLO3PnmHo\/Ur503P0dtUxDsXkvAT\/7KTq9hE9zV4sx8kSL8bicvMlGt04llGtHPDlu3PJCCLxOfmQJidBUEdDM99q+bt4ce\/o8Lt76OGEP\/9y4nlpNP0LnKfoNH3yLPPDWh9qjuqxQQo2AqeRebfrzGQQpHq0k5rByrKxio7ebIW9WdBeRZBjBwLSfpHe3oaK9GSkk595\/I6Hwl+HyMQAkIyG5xiQ0CXkZrl6M1f7eau34p0MaqFrIF7fhSN+ReKrpC7966CbNG9blITr0A1Utv5dTDeuCC3CFasPPxGpOjWP+w4aAAtPI78NX+yuHbuTmLI33LHrzmm3Wlt\/sE82dbBP3MHe\/sF+cQejLSt6iqt5VJa1ILzdDm+U97DwfbzMGfMqI8ipCtB3A4f3z1JTNu4SB+jEaY134hDKt4yuBeD5a0XHYBOt9vpRC+fYwkeXhH8aJzIEndqvIafdRuvovgm4TkqeoWAnPfxmew7RSqHSOsGJEsH0xdEuqmY4rfmU2448t9fuwG6+oWSnTpysan7ALNCWlwttKNgmh5GKbz25Fh+sZSyMZ2477fB2ul5RtpupfaslArXau7XhZirqyuQK9NaQ++UEwRZ5LKM1uNwcQ2xRlxrVaz2x0\/HDFh38dCC2rDs7htgehrjmTOitKYXbscj2sIiIEPgj3ngwz45jx+qOt8nFVmIMvQ1VbswRst3ahG2sbZ8hluzNIdADyVkiPiencAMi2PR2SDDvfYSJfS8Hg1eIWw6TJfzy7w3W1AeeeKM3sQp7GWQOqMos58D9\/bt8QqmxiH7kfRH0mE0sM+BNCA5ks8rKALhcZAguMxdL0XPRr9zDdcWyDLKK+2s5uPrG4upXz1ZZ5V25Nt+vocobeVD2lV\/ri3UIu3IQa6aL9FvTIRqFi8o8hP9c+EqzBktWixBHZoK6E+r1skLeLle9VuyFM\/eUusWq9JDXkV\/jEdaX\/6pib+zsMSLy3w9O4uEaMJVaj7c3u\/qtBgZKHXY41pPEhD9\/RKS394ONW2OFc7jXzGM6onQ3vNmaz2Fc5SwrowD8xKOheKNqGfh1IABmlpfSaSyoO5NU0YKn1YfAIjTObWC4FcVynTSfJtYwx0itk0CuX4fjZOr8h2sqcqgKdLU4jWUFiVkmH8Ut+Fq77FZNXKpmVt4Sy\/bF52qKTqZ9\/bc6qcXEuDCFk1pBkYbYvyOn0ao2T53jyLFRRXdJl3iltGnrOKUhgVPLLdEe3OMGsu7X0A95u1XV2nqhwwi+3clZNuL6efO7nUI6x89a2\/NLwsaVcdxWlv+7lNTO4H9aZa06DuEmOKu2g3wDDLa2A74eRf66IZDgrT0KS1jM7izcibNwjcLi7mCbN6Ns+2pTBexJa\/XrtdA+x3xJqlyrKLpN4GNFPBSuO0CJJhob5xOnSbbqFnEa7Fb5w7skvlv0V3aEyvW6FNRTHzYNjO3UhyrqgxMiToh0wDJt+vSVv4uNqlBNKHI7pss0QZK\/ttg\/6qsKjIUppWsrkphLHm23EKThdP7qh\/ajN\/i\/TaWff1nfpCsPfElQ\/33si1j4GfSliupVJx423Od7TTi0ZXnddhhvUQPuStXIVjSSaQ8zXp9FvoxhR2Ch3M\/LOzS5BIMdD6oktZBfm2gstTnXe+y6SlXOD6jR9KJWDE1j+4k6hkpQq43tUR1I4IpVMAZM\/tMa3FgZvH4dC+rW1TXTuKjRK4S5SHo3us3dzo\/N2CF5xY\/v\/8h10gI7tt9GweWj7KrqVK7PgzvkGu1o061Drr2ma+6Ma69B6pYcWUlrZ9LF4RrxR1ala+ZO\/jel\/EPG3qkJmwjm8YiggRiPfEYoYOzhw6fMeM4064uBigX8yFT\/SqpUww1wyRnTI5UGPhvxK8Hg0nQ4SpgaHMDfHP9gobpCVBSDPSSjRDHOyJNmruABdpmdwv3afH0f\/sMDc30vG2pVMo5jecUTceL7J0HwVsXjke4xXvBV8uQMC4Z6jOqGWnHDrnyfAWX6YIZ+yGDwc0MmmuJMGNAyGQkWC0\/IKxFbMKdFc7iRL968aRLeuvLTvrBw+ouKgZcUzCo+T\/t2mqXcA7de8+ZNk8DdlZ42m5lMdPUpro0Bs9H2XjCEPmET\/HTYjbFdIxwOMf8Aytz0F4lCiKKTxV3TkdHvkZgBYZpMhIh67Ailbe86N2CIeL8bA175hkxxYp\/+aZhHxDGoqhkEnZk\/LBCKsRgxSywU3UVHVsgM8AU72lr6k0P+08o36uKemjsi9Ukc8+nBNS692HIG\/VSZNW7YrVtKiw1x1zwBD4rcdnF3KFmVDReQkk7An8Q44J4wsKiGZ\/\/KjgkZ1XyawBE5rwVfLJG+XVYbi\/PwYY6feiH7Av+bq1r2w\/tJJOLt1yUXTHeFGXZYPGfzAOYOmcI\/D7d9KnkLavbpzoi3bPfRMnbJgFgDZHU++RcvMstvn80U47tCh+pMU9gwZENYN85ZdMUD6cNf5MrpsfDi0BHzNiMeraz3AyJoLz8NL+7ULjTi91\/\/IksUtyBpr24HLmIaIpndcD8JhHqHfea22TKKxUQqPxNMS1Xq7tIszFafdk+P9s7WzmV6Vw6UvWyqoHNkwr6odIQUe7Gngb32Yus16xfWQ333lCuaNvf9mci5MzI6ZJFKxDsxKQgo1hVe7so4iCgBn4ISeDpCP3vj9pe5772JBgdTNslc+VeCjRX2t5A8gO+HKqEwpeYh\/BCrfiBCNpCRT2Fh\/AFruDAegB9sDBiLmWzMmOvbrzbR6eLlzxiHKVJzcfgXI9PwSWTh61veEMEJYZJV4O4vzBvxmHuJiA8Ze5Xi6KVm8H+xoAmlUSAvBfyhk2kAA1IsEFlHHc1+TXXCfBOZ1TIcB\/hWGHzP9dFxfXRcHx3XR8f10bkbfXRioZO6FCEh+LEJ2na54M419XFNfVxTH9fUxzX1cU19XBa9a+rjmvq4pj6uqY9r6uOa+rimPq6pz\/qb+myXE8D19HF1466nj+vp43r6uJ4+rqePw1BxZ6Hr6eN6+riePg6U3\/X0cT19XE8f19NnMz19NtMausmQaTOA3c4V5dRv1x5mR0K0m+xi5RRmpzBv\/QZygnDbIT4rZTdXy9Ttdncm51i92+DUNVL0XU7Fnejc5txg6wgv1C+S6VZzRefMcqJhh0SDM5mdyexM5jpR2jXaWs2dpZuyuFyn6p3pVF2ngtopU40qU+WWIu9U\/Uqp8A+MnSUsUhNEXJlolo5ZmHojJngcSMJW+UHEIsdN4cyXg0Htjh+4d97H72RwDu\/6OOJJj3FT4tOh3h4nkZ6ImCBicLxM9X8VXmIaomieSD2QQttxHzB9KcdjRMTg0RRRvEQcCl\/yRNj7dEcgh84GsNrZXKifixAR0yJKDmDoNGPslxXJ4M\/D5Bmh7gQC28aEAqfFvaQjE3n3\/uMJe\/X63eses4vA3v7j\/COD72FsMFIZAbtGKrK9amKRpHHE9v65f1iiB0tVpKVu92654kEqbgGfzh67DWjinie0\/hCrBJnYi2UiYYV77NOnhTDejTctr9hnxqwCdlT6oBZ1lenOmG8l+HbDmJuF6L1gIO22FZgvYyOYhf1TdqiVzuroTNl88BBiE+A0kU3JdOH5ZBZNatAeLi7YZCQDcccAg3O29SyyFrV+YahFWerdGZTJr7kf22jcHfhsq\/gQR\/TMP2URtLt8wHeX04wkwjYtuaAyFjQ7Np0+WO9X9iX7cdv7mGz7Omy3etLBG74+cX5l4xT+2WINqv0bXAOMctt5dorfGYJduJYzd8NOuztC42LLTWkji9D7+eKaAZor1njl+TTyRkxGMjmXwwi2sAO3n\/\/vP2nbZqGCvvB4qg24+8yBZHqMqygwvcURiV16MmHFop6bAyF7+CAJ9GcLlbyV1EX87tHRs4v9Q8Z+ERaZPomnbCCDRGCI5z42xZ0bJUHfy2iZMr95\/N5yoKjdqcjSAjso7l4+SZ04qfbUuFa0F4VajVjrUaVMkPpws6Wq8zJBk\/WCmKjIxi0T7G14yQYqpr4TKbZ7wM7WgmsVadjs7yNxYCSTCscyEDELeXyprXgq8DNudhAB99XgPq0FiC4P21GYC\/Nw2pjHWvjYdIIHQeEpcH8s2FBRmwwF11+RQJQxo6dpFgitMcIYsd9FrFC6YTiRHgeCSAgY68eJorHGmYDq4wCyMU6ZL7yAx9wcWHg\/U+NEhvJ3GJAZSSR0Ah+wwyxcAHIMg3zXunYoLbLritMv0hTfG00nNJJIcBMpjeVwlDDqbWuEaCTwEYppuALOS1yDvL9HHlYuvkKGNnAKZ8JABYGaZE1FcnDcfOtaodthtPSQT\/vilcs+dymm1VZgcNLH2Pz2JxrtLCTiYr0qOxv31rFE2FicOorf0d2SqDozry6q1woLmHFUHX0KtJJzymCa9napMK4Jxd9rTfH3ainA52KMWp2KW1PBHbyFg7dorfyrQ8LV1YC5GjBXA+ZqwFwNmKsB294asIYPVAe94aA3HKiawxJy2oHTDpx24EDVnCB0oGquxN+V+LsS\/60u8afybUUJHn0xUoFPCSlPHn\/DlO8z0xXRJKUIX2KyB15p0k08FcfCS4LpIWMgglLeD6ZskkEBXGEaS8L6U4aFeWxiKt\/hfjaO+VTEB8zk4fBkhh2QYCW5TvD5NstEsP\/zA5twfMX3yqSgYHIdzBFTeCjtgyc2zWWstJY0BhVfwg1nlD5TTEcRMJJ+IDDbxBehinQSY\/39SE3Yb6n0LuFeSgzyeITJK76KBMvSEs9m86IHYeKnGYCkpJ+z4rzhPh6oaHhAU6YsnhH353KLUpAdYyAfZgElaQjD0uYemiVM+QCzg2ShBH\/AYzaIVcgGgRAJTPAVEBAmiVlGhbcXZubT1OA9sPgYGZoC7dUw5mGII8cH4xKlGgnC4XVBSklBQAugCqyEDKYm68kX\/XQ4FDEMhNaRDbGHONymAryX0jbhn8gXMXCxXWUFcwoRHwJmPrG5QzAkNRhQZhF79Y8338P4Q0oIIhrRNAP+O\/BMjFgCMpQ+z5huKGExWTp+xvgggaEgn5qMLB8fLuEjLrymhyviLcO0MGJLrFRnmUIiupKxijBZaI5lPRUKhLigARZIggOQM04165FGbC\/nWcxbCgUmhtKr8odi7hMQmXhpSstWyHkaikjEPADxjZ+y3UYvD1UsTKIXcSHlZeEoJrO7vZHwTNIa5qze7wv4U9xHxkxgeCadzHxpuBQZ1azZBDOzsmUTAdA5wo2QRpHAOm7MEouBjeArm5SGmz5Wnn1xwi+B5EiqUPAIaDpIA\/wTu8tT\/tVhJl6e\/\/Dw5Ql7i0M4VeE4FiMRaVhIdoa7GK+lPLTnD+A6qw68A5adiCIz4YJZdoKFU+lwZLY9XIU71VdmLOn4PmwPWFBfaDmMMBNuRmGYaoFyoboSczllibJpdlaoWYJT0h2xcOQHyDthGiQSdzD9ruHdQs8kjAfLNTQZzAOeIYEUOQHeSxxIRNXqek6dMETW+gDmEIgk41ZzPe19wyP3A3ElAjO8A1zXNDLv9mGwb9IYs\/9AfkjMPTQzKST9aZs1BzvcGzFlrpUDpA\/se5KIySgmMttZyoiZMw72JawKg7+R+fiYGAP+EjFygN1s2SQyMQo6EqipNLQC64dcGggOmnaeQG8+27ddP0wwS1CRHMT3wh6Hs9uQhfh7rOCRuHuz4ZN4SGFBo+T2fMKcV38Usw0eIodnAgQ2mC94kAsFmGMg7ErgoQWbSoY2mxHnPBQJSSe7pjKCLRiafMvi7jWZpNn4swcWqIR738wRxLngIZ6kk5GERYPbqfDA3Kd8OaBkUiQaHDkw+jG+nHaFVsBdMvKlx2lx7AOIo\/KdoOzXN4iZLBUTpJgvdLZA+VjPIru+Ga\/apct4gY+BG5DP8rUEwmQkuERYIZMfihIpFtnjZUSzNo8yS27owgP4lA9MRCj8Y8vo9vIY94EmsWjZFx+s+shscB+RWyb5qr83QDeLNbO0D7tH6zpK4h\/RC3+OG\/Y1sVSblae3JWuiOPXEz8D2qAa946HQdZxt5ls0Pl7cOzr87h4KPfjzLyeel0bTv1jD4skzu1PoTAYivAXuzKsINCtqz\/DhDexuu66WYbIxrJ1gtObrpdbD481NdwyawffSQzlFgnGnJwvSUAxBI14H\/5+q4f1zL5bjROcsbdWjMtOXL6+JjlxRHJCaDIKWVMj7sUBVVDx\/IF\/WG\/e1WqXcTwXve0uv7lXNO+en5tTzzXPWt+513PiP3uD\/3ntpyF6x9qncAKrO2YrYJkoDVlmiyi68OaG\/7lEvfhJob+c0OkyUfgOPrJNGq9vsU9oosy4h\/jUGu3G25ppTPDXr+OPQuRTXfUokJncl9L5h\/zmt15JjdM5D6ijfpH66hPJN7ttuCKobpyAi9D2dBgr\/OYl4MNVSf68i0c6EMsOzzsnV8PxpQO3MtmCslZzwXvszRsTJ8bJIyats5KcqwGJxED8\/S006dK3TY98JscY7vNY57WPx63IogE+L03\/6UWv5P7c8utzNeXH24oBe5d2Nbpmy2\/qawn7b3llBG6gZ2N5ffD85Sc\/JedqOaMz8WSUJeOaLKJHJNHezTGtqsdaPUPCro+N13kX7cRZjRawB6zRG1zsMBmOC6Dafd857FEFMvSQPP5BP2QZjIvMSiTedzZ4sIj9zkY94YCJikZoczEJV+DDj0T687gGp4vqwPuZb\/R234Cj2X+KNt69Sw34H81AtgkEdCZLKwP9omG2NOlpDo8eyY2OXv6UAGCWkb980kKtLbcdzikdcGU1Dmz9MnIsSJ\/JIio2mDZhAJKQ8QoQxpIHMIDdCHlC+A6h4oN6Sk5yARfpT2FVK5SHtAKPQFkkE446DNAim9i6hLQLIZvfdPBf31+PvNce3QfR\/hQOw8m9sQvYmIluMdh+y1xiwKnxVdUS2FcQoQ2HBYJuP4VqB7R\/wz8gEnmk4sRjAl5GH45GJrvzS2ziGjgKJsc0p00KErM+9ywmPYVUxFQdEYtU3YhaANpPNJgPvAevrfqLuK4TOwRQI+znk0TRrsNCGh+YGa6VSovnaVPxleulCwK123cp3E1gMmLUEmtS6SLrEDI78duolurUkeLjVQkc4i3yJiT14+vwM\/7YIk8B2GI2gRpnXzjCTUQyW67BbcvxsMRTLbCUad900cW+uf5EirWs8KVPpXmdPJMfmeUWwx47pDJuuya60TEscPWWV0HoYpouF7vL901\/MRXeOT9wNdzok0ZSvLtv7vboPWS7g3eZzN9zxAKLUr+cO8Dcq7jWi3S+UEQ7QpikddyWvC3NIf22dep\/atUDqVbk3xWRLTf\/Du8wf6zRCsxX517+aULWc0Og+huDrk+X26vV8ipt93kmLB3xp0IDeWv05hngXFXSSci7ti3JwAW+kqfTDpKHJSGDtaN7cgsqLr3ggfRuhxkAn11NbW5pHtD0VXYlYYzzyJ8rbyqoRMX5IdeDY0iKLhgrqp6GlT1Xz3JaB0xs3HMwumHkVaxZerSa++rfouhXfTqGQrLpt2SBaycf458JX7lVE0y9lwncDewYY3ag0dWJ4ew0uM1taQQqPwlJIfx2FcwhrkGt9JapByyHfd2PprVB7jcXTtc6zVaXI7YqUGcsGAOIXE6qiOb8oJunExC6JCQvF48REZ8TERZ2k7Ugl1xW7\/twW6FfU+61CSc\/BDOyyWtf1Nei3RLuNaFp1SLP+7CnG6qZDfVofJZBnd7CJzvJ0n+WRZy2SnQw5V5p0s9zUHkAyCDCL1tV4wsxii281AbrkGEB4oDOwolNf1AL0WUKNrFCwliBt36FzRr4Zv9C1k\/w06IG5hhGVlxRdAz2jmqEZzt65IngwqhCy1xcT4GPBAnkpmvTcZI4Z+dJV+KxSq1a5kS7bos4Hn3akrqmxWM56KqHWOM\/1IZNYxL4lh0axnvaWx0R4htUaCc5EDuRS+7o8cX7KNN86w7KgWuWOHgv0idVu3OdjUzuECMQIZTBfjyqiNDTIlHAUxbOe2ZqJzwgDYCA3ZaypyujAohliQMJLUo51cLyAYpj3mMZi3DivlG37TLpFWvS3C\/7qlfKnVaG+syfZTiF\/F2Jc9ymNDOV15Hcujbr5pXAITy5mv0ZIKCPqTlUYLvdcroAIIZIPPElEHNVD+5DDCGwRv8bGvnjmOGxzrhQUe+8H78Tn5KO6FFE7yuhes6dYtRS4RhT2wlhPErMzf0QI8Tp++jKmYjeCKNud4vXJgCI3wUXHSzTzjqzWVrdO\/NSo0rpktcsfnDLyxef3gxb7e7XZ3aaK4tvhVN4mbRLHIc1ZhXe6Wfhyz1XVdmeNrk2pfl1Frt9uOVDZTVKvoWoTQd5aDVWXMuMuN0btWgPFCiBUtXXWlU7Di8O24aJ4ELxKkzfoY94F1I+dB51qyHC2vaxeNVbTvTQDrxkk16rnd4PYrA00HZ2XItvXNnQFapZVfokk80CTs+BXXohDtTS2\/9hclCuLuGEsM7UNxLSga+day+XJH5egfeRNs7LehnNNzNK8TWB+OUbCeN5PjGJuWuXQlhzht+4Dt9rnYRWRmHUBxdZm0WVg8ApF1ictZiHH7o557C9rTUj1QdTujIqOVIQNGa8yVExzKeIbIgQh3vx1Bz19yH4wkc8NlhPd7qHrd70kp3kf5fIa\/rLH9mDpgb1fH6GnK6d2VYW7rh6ra9YA\/3mYPHtRQ44flUs4uHGz1SmhK3egdy6QX8+u3GDYu+mIy3vEXxZ+1hwCjo5aEefDVuqfuoObuC3GS7LFSLn1hXFprNMtz6a\/Y7gNNZBXHdjp3URHTRyqY\/P+pL36+CXSVp\/8XUxrAZkkrZWebHkIfjegt5oNA3Hf\/5HrpEWGaw9+Zms1lLu1iyqoKJ3j8Tp17ReHa3TJrUq53GVsGs4852wUi8GLe6MkGfcePBDR4UReyrHwJT9U8fABfnrwSg7\/\/e98lEb83kv4m5m\/nz\/gL5nUG3WX3hCXuYs+nLfqSvwgYlHjSTaVlihZ4zEi8t8PTuKhrpPdxad9QQP52ERtRz9\/0llkWnpvpbtrtTVe1sKxlIZaHZa+ibyRJVAlTXTkbAQN5cWLFoPBDQCpXIrpJho6ry5QlvHs9XbLN\/Ms7fCfsLy\/JgR0Ex5Xz7SiPo0FgQQsfdp+3TBWO2u5olSvkufTJNV5PEzDmrW1nSpr2EWnLPvUjPi4cKtQx\/Bkn+5aanh5ztpoClZrarZLvWog9aqdc7a65ePKPxrfH5viazk46etGi6XrpWh2sAqmFXt\/mflRnuAI8fEmVuFd5eBE9Tbv\/lnpmKtBiv2lBQNbjv54J29YklvkteaS8mrZrOdizGO+LNXnohOC14ECNMCmrVsanZHGTR6MmzIdtvjE37ry2YY6hDRYrNBAIGDfZd9tFLAa17tuRGprSpoXzfXOVza3HJZ3ZfuubH9LyvbvHPhQsxqxU9lKqmzZtMrzGy\/lyt+U+6i+RlfW3nedT5vRDVcUixvnrQuH89cBD0xTqk6Lx+bhlqXWOz3b6dk7oGc70dHqDc2Bj3XbNftVW24eMRklIBA1WjsZ5E+iWALfHGBvjKzLtjbXmkJxgtKBT3mXDLoIMX40Nn\/CRwUiyRF68GFMIm+Zt1cV7X\/+LVXJszfUb8q+2GD4TGQygq9oVF8N5dDc1koe\/hcYAI8iEbMvrTw\/e3rvBTuLdBKnhDoBFo3gIUxyctjKW8+nGkj5jl\/JISUjM18MeBokrB+riRYg4c9tvn8bb68QgQ2\/MFgJISIytltai9WlSj4gWL4Bqq6H3RhYyKT+H6kkpK2kG0PCPpzsU8buRg71WMjGHv5XRjKRPPhw2hECrs4KdmL4L4V\/tnMaFbZm\/8tdmWufvWDHjx8x6yUBbi7uf5Dd4uLwrtBiNnWzsYk2j56y+W0+UEGgJnBEv5omgv05SJ7BVQ+\/vcD\/yXQF05krGeHJw9IxOz\/5CU9CHiDCH7U1QzAw\/H8RYQHNB+5d8qH4BTSCMz\/XOLDD440\/9yu2Vj3zjVuxVAltpwBK9W+p4Jdv+fj7ZYbsJ7akJ2\/YWnlke\/d6PK7Tuwt0rtPzzlWFdorBUBk\/TeNYRMnpCKvrzkXyDixzv04bYvMt5ie\/uHd0+N09BAWFP\/9y4nlpNP2L9ZA+eZaOfQ7mhjU9skd209uzZHt5evv5rNn69xU2X53CQk\/vlAt0dclXh3iVDoVZP9DYz4\/mGo3PS53O27eOZnp7bZxvs0DhOxnUuL9aattiXKNWD\/YiCqJRK\/0WWrC3Sbyjo9cnGyfe+8CvMfSLGjhR+3c8HL1CHXUN5MAWhb40++66Zda2+GeV0Me6UZDQrWhWKwbTKugKrKWtUVKNz62c5cioVyK\/uLcBK7Rd9LyLvCP6a4PSxWTCJgqbMETSE8G0V9PRdZMLhxW2e7POtSYLn97Yo6yCIy0YsKLLBr0yOmQY8MBDmxErsDWCTVWeSrW53+5NYDea\/Mw3NPL0OomCj3zzpuH1XfvSVp7F+pc2Y\/9WqdNBJdDwRO8F8\/SdCSbQQsOUYVsUHAQFwX9nKLFHpCAbnYGxCJvBfpHbrtS1aO4nsMzYxcX+XSHRyjfk4TrkrxttkQKnsYstpePWhh6NwLNWwCy2WlC6r+vV9tzsyErdSnirKn9EeF2piz3SuI\/5TbHg\/v2+GKhY3J\/EMklExLyR8C5FjGFUvEGPVAq7uy8Y7wcCbx3Iz4WeZRpTtKhhGyX0sL2YY+s0TJGK6DJPRZ6QV3S3vWX\/kLFfTN81GY4Dgeh48D5FN2r6il1JjcC8vVKAvh94rAVWB\/5s7lriSUj7FNSt4wD4409AuldEuV8M4eyr16tJ5b4NoPHPPJZIZVRv9DriYPF1EjDLQytExlqhCK3uesnx8Hhz0x0rFXwvKWuPuint9GQ9UNaHKp6ug8FP1fD+uRfLcbJKsLcsBPntEkQuvXcOr5x7iDpeCbH8qy3cqc6OXwuYJU440FmX5Zuc+dh6NJkudaUta6x2UXmdr59WKy84nY243tlyykIbQfrxBPhhGOG5WguHnkfzD1r\/dl9pBIsnc2UPhFqOYiyy3ZXqxk+TpnZVDc\/29TEsyQtoYPt2K7BRag1AW68XrVrvJrqhuSlJJer9l6llteTS9Se1sqH2GhzDMrlyEg9bmUM7yQBVNvZtuQzLckG6UReMScWtBb7LyWHboK2WICjFs010x9rfpnNwsYq6NFW1OoBh8wru+oh2+9jbP8LXTPe6x+9qp5U9O9H\/dkOB42HtasLQa6l4DR7ce8H+GKlIuJpBWzPYlWI8Yz6eomOM\/etfyAOZCN5Ol\/2njzGPNPlmmBc\/Y+NYRkmP7RkenJvv\/jM2CFI9unCVkYsrI\/cysqGMIq\/SGEh6m5sKQyD77GtJCpOiOMqsvOrHghTTQrAJVk9jyECY3nu+EpqZKATGJTAEhr\/eGpzIUnxK+bjqNAC8yb2Cv71TpyocS7SC1uotq1k0009l4H80rdbWiIRfztdXrklxA4l6XcL3+dTmciPu\/1vi6reEUbC8X\/r6vB7LoWI8+HJp06yLorJkFSQGeoFWuJ2NIMmQJW6UJ8h1vete8YregusSBeQjSpO3ts78VAWom6DaklWTsj\/6IoHv3vLPvX12TbKYiY1j5aee0JXLPG0oY\/YiZtoMrm2pDTLG6ysepDwR9u0GTUNwb8TUwEp7jBKL2MaXNBMmLgwrp+mCrI3a+pj0JNITimSLbDB0OphqYTsPYeelCdAErhzJ4QgZMeTDSCZgsK9vvGcD3CAZkwmUlAdA1ySN4VSWwSFjHzELwAKwhDDQhIEwVBjc90xmj1GfMzSTNWe1rnwD2DL882uzNF\/W9lbKK6Q0wR4xMOYJwjh+BkYQDNiBfeluQUg+zhcvkCV2qHIlO9jZp7vcu2QP+Q8MICudUDgBSZBN9+nUmTFqnuXkWr2stn+svEEqI10PHf2qyB+gHjDnxcVOSSC7o8zpSd1xM8Wh3oHqds5Ob4SvhfXFnaaN2SzvVGKBATEtFA4szSLFJnyKmvZQGA\/S3CYzV1Mx2F0mH6WEBQG7lJGv0byaWZ4abIC3qU6MrSzA3Joi\/qLV99fIdf8saO55ap2xcM8iXwj\/oKCpYIqxp2IEhQymCLgIhoqMrL0lLeYZ2N0wuVepZZfc4UgGDgdrJwKy9NOhsTzxzlBS0hwjWNPM\/4g\/YJt0\/AHIk0gwjFifx\/DsohsTc6CR2w436Yq8xcGzJpdkdZikvHUBjf2V8qdVuxZcQ17Gxkd1n9LIUF5HfudwdZpfiiVxXutnWOjlK4Rp6jRQw4TKuO5TloWbnaK\/sewbWmAj6k5VGDbajlgkH3iSiDhaljm8GElLDuGAuQXXpdzGvnjmOGxjHEbNeN4P3onPyUd1iXnwbcRJ9po9xapgaDXfavAkMTvzR9Ang1pJYSWie65NawNRx\/pQ9GWh4F1Pl7aCxFWVVtc+rbLiu90NIEvbJI5DmrMK73ZbvdbbgTeyNiu33972RrAV3SSuOZVrTrUlTWDrn4YzUmA+0jeuXalrV+ralbp2pQ3UHlFPMcyw10v2XxC8SpM3GOBs8bBeX6rz4qM9p8pd72wxjhWiebzK6FFHlVhM1Pqs3IR+v4KnXv5ep8a6lLwoIXfaM+UaNlMaMo6JJAUkMUQOW1iew85ylLGQXwqGeLp0h4X0Mv+apG4NCiuj6A5LYiwNEswXsbwyN5j2ixHJykGsQhhLnhGSP41TlrY2jRnNtRaRbHb7rIgSXnLIro+QsgFMtDKi0qeIZaBaLAM8oLsQsawwPhF5cHlsxnbtIQcwWHzto6M8s+F9\/1fsa9k+Ntm1hII7BEmW5bbPythQRmW1RYWjd26jEIs70DIHWuZAy9rKVZqvPeyvh\/hGaTTJba9wAEZIgyTA4domwgjtiZmG6BU4ZK+xoqPwVWXcFTqnZuCZNmtNw5mBrZALCWw4nFgM4MvIM3j2lbMXmQ6xjAdT+6IsiS3LjDOlP3yKFbgh63PvcsJjWLh+ikVzld8YCjh\/Z4cyTgbeoyJxP1H34Z8DAxZsPoc8mma1RWvbg01kqt0Ak9d2dteqbqc2xr\/ESN8rHLOLTVlTSr74pbfWmddK2tpf1i9jFcK0bvM7a33dPqu9Bgzo5ZkyKiYdp17Trw4lx7DNYGV1a0lAX09qNoPzJSa1EzwQ\/HuLpVYOjmv\/zjqxK\/qkd4qZjMa6HOFhS46fDXe\/rBOjnq1EJ1tT54YBGXF1uv9mtsbr7InksqbHdk873ppUjcxTvNe6PdIkruRSprfK+M4A96yBPZqNSn1qXiossQ7L2jzaQva11ZS2hCVzu9Da9lbn7gZ3wzZEvfuNhbuXKyBut7ob3A0rBnT16zkV4U1V5PhS+uLilu1bkK26OeuhKStvJb+jS5Hswk5dpAw3ZrRXKxZsmiuXesscKldzwqRZR0+2hP\/6V+uJjU4sbSPbvT55errcqi8FF82TVpWUklmbvTU6WTPiXVTQqzJT7qK1pjBzcM2RmjjgZQe87ICXtxx4eQbUtlkIZoe87JCXHfKyw4919HPIyw552e0ch7zskJcd8vIqyMvPf3j48q3gWK8ZmtZL8EX2478p5VMN5AgMbTbJSiqBPXycxzw8sqdSYAq08rHfG2Eqj3g0RG9bRWv6C4vS8K0tNpr9+QtYs6eBohLT+W+LybXVC2rgmfbxuvg3vVaNpfBJlJjfCp\/rvO+nWSonfjS+cnxh8YfKhk6BiiD\/bibkVz\/M0RJ+rvHynJrmJbcS1P48\/1WN9xaJZ559M2Hht6PKm\/HW\/qR81pl0fRUcIVrFGpufmVMO\/phfyDWay\/kggL5fjQO+G6AFuT4hSO88i3QSpySdz5NY8BAEco+F6xyF9nhEofTugk\/2+h12qvTZC3b8+BEzp6hn5ZcHi4mrar7NG93ujmLyqbidgIfFLimttx8S7K\/seJdmilXTQaAmGNaZgsqNbiLg5yc7yLGrs3gJ5eC2n3eMTapprUuUqb+yvZvYjzyVj\/cvumwG75HUf\/TUSn1pdQkDAHNFdXTXjoAOwxqazttfLUVAkuDhtxf7O3p8faUB7toxttDEuPW3HRNd7EbLa37C13i\/y5KHrJQ1DvA2Y52tl09ybTP3s5f0G2Q\/wGgv1jrceelyy7C\/EkGLfl7vFGoy2n8UpnJ485ocLppt5RczVlTMDq9rHYeL1LaaLy0IlcPb5et\/2pcM5VWN1B72x70n3357dMyOj7578oQ9fPzoiB0\/ffQU\/vv4KZij3z18\/B17\/PThU\/zpyX72nnNlb3jA4PZDuB+1\/cOHf0JXcQakhH3vuYwYZ162UuxDLEGnSVSGsGTe+ACfdgiPe8EePrRPSUZCi\/xZBHI3px8Ble1g3qkJCwouW3w0vOoXwVQUTM2tgVKXjCf580wCDulWYjbA6k7dTvrLvtwxL9TeNrihdsxvtbrEKePp2qX53mIXWQ\/JxTbYRZ+WJaaGJvV07XpFJq9fKRX+gbHzKZw4n1\/HMYwQI5gGpjTzBgxFUl3AP++\/NPf3KyVPD6QI\/HeFngZV8yJvfHd34OWueNwEZEYnqWOe9s+a9cEIKPszj5eCFe+1WaTs1WwwClrNmZkHwbvWIkflzkq37q1KJTQnfb2gGWeZtgDtQd1UnFx2u6wDjsMDhGiZ1ngCqMIyuqWf6BvLz+w+SmiQHqxZGZA9fw3ZKHs4elCDKaObNhjro8USDYG9Wc6keNy\/U8k7GfQ+4R2UsQUHZydmfbFfClr3zNpaIZ6ycCySJQdGHdYZXRm0WYsjBpOlPCJjd90PsLGmMd8Yjy2WLNhq56pJ1N4CXG+ZZuau\/bhrP+7aj7v24679uGs\/7m7YUPvxRkHCXSfhDXQSbn4FXZ9f1+d3zr\/frOpap1t8Tf9LYawniTmOf0TTqE4DAKk7BKveHF5J9\/BxP21HM+j2ukreuVbUa+7YuynBfNEV8bAKPrKTD26Humbxrlm8axbfbLP4Ldnjrle86xXvesW7XvGu+5zrFe96xbte8Q33irfthhdmGb6+ElFyLiINf89gOQV++1F6l4GI62Qdzj+n39kWlLP+xB9UEDAZDWLxWwpjD6Z5d3rK9M077P7jjNltb3B5EtYXImI6Sb3LQ9bxjps43bMBkwmCQBQGfoBTg7\/HMjKon7h8WH4wBpYycz9jHscCgYRKGUZiG6YqsddznI4TdilabXzcnaQaXwR82rnkk2azVVaY4xLV9Xt80pI8TRW\/lUEgtfBU5Os6QbYNp7\/SpkYx90HEUnXFom6TYtim4HU268XzbeNIgcOVcLHgjEAU4i7Jn0+tZf3C5kz4jgqgOhnVdQV0xtMTLpNub92V+WCJkP4owyX97cOZgD5FM4oKWts2P+aESwfkJQ58r5WtmZMlSOq4cI7uuOPNELFa465ybURrL\/Cw1gJvgX5TrsfG\/m51Yi\/v\/WaV2nIXdR5Qlz1EGxXeJVMRi7F8FJtbdEj32W6ddiASb\/RWxYLOHt1ar5jFo1DL0qWNo6mjoWnxeUMlceu+t2uR5IUbAxGoFs\/xYolqPJKB+LjsKTkCB\/WEQT8Y\/7rQi\/kCjqOY4Du09AXjEVPjRIbyd\/iOfPUHiMDBtWBnbAIPGakx+nHR2EOgkIggmEVsgJnhBYTELAfWj\/YrQlGbmgGDGQLX\/aDGYpAG6Hkk2G89UmngR7ZqDf2MjGCrQx5NLdZIeFjdSWtodCsESD9WEy1OZkAgbVQjVUcJMcP7PhUfVdGz\/aUbw7xldDOg3U6McjH+SSeGWARH6cSA1oScckfmWg5W5a4QYxcwV0qDruyQuo8CsyDm36lEDqRHHLxDs7Tt3j5\/uctlircf7LuGn7ryDeKzbbmI4MXbKbIz2McO65A5eNTNg3yVYqSeeluCJSI9MWshxG1nzKJ9Y1R+G\/R3Bv9dMfiZoMUagcIRiNiYs4fsXKGp+ejo2UZRTW7Iqeu3mFDXOVQUW\/bxVl2JH2Dn1niSrWk3TY+rP0ZE\/vvBSTzUdWqz+bQvaCAfmwBZ6edPOovOKYtuu+BWKq3xkijpXqmO7No6czYjhvmrBjKHWZ1XlHvIixctJvKWEdBLiqYvxVRvDN+glmxapey7fjEH+1QTFLF6unXDknnZ5jdHL3Ldkhhp5ME1dYpoTNbyT9hN8E21WPZqB\/SymDF5jE6tw2jp0\/aXgTIuq+BohyFWPGOrFNQ1SXUeD9Pw1uhjcxLgLpvTbQm\/lWXQhVuFOiX\/7NNdA\/Ipz1kbLWZqzehxRUwNFDG1c85Wt0MdWFfj+2NTfL0MNXvdxY4dxCxrxfuyzIYpT3BEPn4Tq\/CucnCiept3xq0LsWt\/aen9Odh+ejDtOVtim\/oDLd7hrTkIvTXAkFx0QvBuIWxi99i0dUujM9K4yYNxU6bDFp\/4O4Zh1TzkbMve5vogVZ2B7+l0dWxv6XrXjQ9uDXbgorneeQjBNQUiHT6mw8fsOD7mnWvk0KxG7FQ2BzvqYEcd7Oj6YUe3EZh+Cz0wTak6LR6bTtF2irZTtDfA3E54bAvQf7e9sxfX61To048qsegMGgEZbM0LGyr8r4pYP00MsOpboTUfincq+QeYaLFOFJbC4t\/UZPp9\/1fhJRkKb6QSkxpZNYbUf8mjKRXm6MrVM7EYgLyPwA7A53wvvdJ5MrDlEDHj9efE5FjUSFM1z9gCHPF\/tkLLGx8GFM4ZBGnbCeIwtsRQjPxKyaqtUBA3xx3LGGhNt9Ii2QY0z013lxXr4Ndq4G1lVhlksUEzaL7U1fy618hZsOREw5KVs8gLUl\/oOqr2EmrYrKU6+rhKWoN1y+vH36uxPmTshKGT9WceS94PBIajco0mFtxHRWZPxWwSk2qzzzQK4PwSXxJwEI+nbCKDACGqIhkgzJUpO+cEf0xP0vlzhN5HiCyZYMkxXIgw+kLABfBlX2y0+NjpTduiBsEeeSeDVqa4VcrMTBfsJCUqKh5O51sN99mpcFumkdXVu1vTyI6OXp\/slkaWzagtjWw5nHQj+pq96t+w0vmQHT9imkCBDJQLanKgSwUqIUdUpguhHiR8xJUjgB9NWJ+IBaQT1NbiNIpQwfvf\/+v\/+78Ze2WcVRYsaO7xoMCNVYyPQu3q\/OQnBI3kAWLHEGh35rkyDS8+cO+SD8UvMhmd+T16e7HhUCi1GdcB\/qlxAByBTRPpcdAgeQyXDRAXNRKT0\/NerS5UN4ynqmLFozPfxMTnfYAVxlXxvhsH3Slsav1bKvjlWz7+flmw5xNbciiFawZOemMpQExXgwRf6nJHM6vcKbaYwM47TWNQ5pLTEcr8c5G846Hw6\/gzzLdYevfi3tHhd\/fYgHvw519OPC+Npn+xwf8nz9Kxz8HktCZr3huvk3HMJZvC01uIYubx2G\/i1Vu2n5rZgBWkUh1sEG8ZqtBdXovVGbrOUlQ6APN1hCHm6k4NK+e6xuO4omLnpYpCcJaHuMzXxdbec6hV6T+beGZp+C1Yb20SL7M6N0q894FfY+gXTXRQ2nWhsC09mlo\/c6TZqNeN7bZPH1bO87IL1ljZbLwdmnJTVvma4CbrmH65ZbwsvhiqK5Ff3NuIq+MaH26W0y4OrzW8PxkdMPJjzsWgv2rxpE1rc8EQTcZ0p3irrkDeUNWRvR5+jAapFpquvA05ndzh5Bu9vZUU3XDI2Ef7HFPXhL7WQR69tnepKJhSDH3uMusVJUcufWdaQDHCrMSe9OMZlHcBy9uGuMvEvxsKtduH9l\/eSNjbDaLOQXGbeb5S\/rQuYHWhjL3uUxoZyuvI3y7E7EpLscT+tjt8cWdhuua0ZmfSMY+1iOs+BeS1Qzjqpt5OC2xE3akKw0bB5UTygSeJiJc14FiCqGSaDfo1NvbFM8dhm0tYMKCq78Tn5KO6FNEGcP8SB5nZW5M20eIClj763fI1p3x1GItgr1nFtUrMo3msqJPEHMY\/oj1VB12yUyj1u4yz11r82R6cb9BKrtoKaUXDZ9WeK5sq8q5JomrhzTIIJB3tZpJDyOllKrunIn8tXU3qY5y02PKkE+AFtQE1g+TZ2sTPXSmIu2OQOA3DNy2OJLSOWJtsA2p4w\/i0d7qzL2sQ5qGG+7lNI6pMZPXuCOetBozaHYQzh0x2x7HhGzlpd+msazPK6oDKHFDZLgBpldKwHHStg6510LUOurbxBkZlfaQ8CF6lyZulzsctabmxJPmi30Df+24g3dWM0Y1j5QmtX2X0aL9\/+GabzK6tiaRrNluj2WyWOUzgCgfs+PHDJ9cxFHTqIeMO0iCYEqTBdQQGlox4ws7YiF8JRLIayM\/30zHrT+GbyD9k7MyWIIfwxXg8hW\/eD2A8aayFAcGaqDTwzf0GKCH1RkxwLUXMsISa\/Sj1mO3hy7EBO+\/DSFLCT8A04J\/EgHtw2uNnk6d7QPij4ZR5pvaapQZ7FB6AF0k7ZLx5nPYD6eHMrrgMEAkMERk0pjj7SujIDh3TjIUWMYxwoOKQJ4QJdmiwIyxEGHuakw6ogNQz9ORpouAOBHmA9wyECDQL5KVgHCYX4bWhOMwW4hcc2MTmcGsxT+m\/URK1zexOJop5HBO0J+Y7k3NNMyugijHMmvdxziYbG\/5GksKLecTUOJEhbD\/K9k5iFTCdxKmXpLE4wCTxiTBjieVwBE9VCT1TYXo5LW5g1gAejiOxOd70s6YxalgMGKCM8DZKFcf1wyxBjc9HcmWrqAIcRDiWiK0BlFITnaHIIh7G7DfKEbcXyAF8hNeIBIE7xjlwEvAKXkDC9sS+8URrOYzwr33DgYbAvI\/SbsSDgRnxSMXJfS\/FB0b+7PsipWeJ70RxylDHaUQSy\/Xgg8dTeLIcZIM2JP96mnlmvdkAsFiwdjY51yTE4xg8+tE8swBmAiQd4dMUEnd+SDlK3RUPUlyWcyGYOBwesl9UHPjnCU9EhlzCgSfCc5g0EatXFoRu9qC5pHh6mq4APzc3igWZ8pUxUdpKleeRnlQKxJfUfRqdMB4RdGb+lqrk2YcAZCyIQB77ypRzjLh3KeIpcCLsnkN2LnEvzXgLdJgr6SOLT82ut7wqETIx4QjozEC6CdomB4h9A7+MFWw8lKu5zJ2XBMCkBoIxOwfMo1i+mUmQKQKKtoKbZFKEqD\/RUCBGD0lWFHoCzpuziIQC7tgDM8wBHG4pijGh0wDPNInSHSW\/FT6ogmBVCTfngR7BNTBZfOWhodUaF2k5piAZZUsgM2hHHdcB3aAnPOxctUSzmaGrbN86qAZllmOxXucBU6ZwlnyUoVh\/Vkdtplh9HofdiNWssnK1OeRh+7mm0RJAhcOt2ZhVBzpDAs7NENLPbPKZhqMlEqbIEA4PAulFCwixfnV+ItqLr1kJM41MwmGF6HzB7Hw7MLor3g0Gi7wylZS2mLH4vIMcuK5w3TVzBI0UncBJPVUEM4da9pVFAzSYeHR\/X5FRBSonzEvLcBxMu67irRefdyfOUnf2NDyPXERYbEhtbG6Pqs9BUc2AwOE70\/MErTHr\/wg52PYhj1LUShFoPGGoaCfWeCt6TshKZSlpuHqs6JIw9wXAHhZowfEk01NBWkUJ2se0rSO414hJXVcD\/ePek2+\/PXrIjo++e\/KEHT9+esyOnz56esSOH3375BF7+t3xEXv48DF8+83x0\/3sbZOR9EYGNHMEOngymloKsUGswspjYmY0x3Y0Dx8\/OspG8\/jp40fsu4ePv2OPnz58ij89yUfzo0DjmQWSSI2WB1WGg8TVip2B\/JxJzyHI50jzSMzs3WZK8k3xhe65ur8VmI9Yb2G5ftUn2+VATJZTc752cWWIzdue\/1nkyxjsWYIi6K0jdRKlSCuzskvpdllJ9kLR2c5CqLEU\/s\/oZLyji0HHY6tMTrJrvXRmdN63MqufRKgSsS4Z1MmMclSjWqGt6d+C\/LJeKjNSCgtKKwZUwKo1GmVmOhpdbu\/4yeHDP+0zD+ONGLOyZq+J2JF5TMrn3kO6LBa\/pZIctzghAwtEUSaMOKkYtscYrF9NoaQJuZeN2Xt8+O2finDwMmI\/Sw0KOdi0l5p9I40fOdXCn3u2GQYojSM+xrt86SGEMoLCJ1NULKXHfDnIokx9kUwwXklxnImykRmdR4BgBJlP4bDgczC6bO5tIOV67\/HTw28KM\/Zoy5sAzswfgGFKEXNQsI1e\/sDc\/AIm\/M38LTgJwndC0yEnMpjv2Y1mEC\/Y0eG3N906FJGIYbb2VhMxM\/fOX0xWAS7rIxg92kgDQs0v0hTU76eP7IrM38xpbbl\/n1aefiMY\/zxKaCYOj1Exj+FHjCYzj880eYwSw60h\/IvekxGYRGB6TWfUvYmFMH6h4SlRZlf1p4nAgspCsDoI0Gq7smELjiNh4rOIPanNHPE+HDsQ63\/\/r\/\/3\/zGhYJlgBDEL5o3BAvksQ2ChjK8f2H3w3y398fMRLsvDb4g8YBB+zTLZkK4ogoEcDxS0nD6QQ5w39uDUGigmKRRCYctrj6P4CHHD3BIAKUIFPD3NbczMESUwXkqWKUZxr90mEQLMF58pYj6QIvD1dU\/W3izA+4GDjGOvVPS7jCQQ8xJ7M2DgFUOx\/1OlM5oPpPV8BbjxkjwYb5\/dVyrRSczHzEKTUeiJYvNgV5OfDNeGXEyZxt8sSpvpWLrYz5B5\/M7TPnWJqJPr88fiXLqBO7ccDROEY95YjYfVWpysCncP3CTiU7hWfE4MTtzYY1EaYmfdmzHwO0xFYpv1kvDh8RbRZ6xU8H3Wgk866lxHQU\/EUMXTdWy7v4s4EsF962lYtNF+GcnAJnzxmDogUfjf5mjBqQVi3HREYtw3iVpWlhRSBOA4KgpEUmlMKpi2wtZoEPMXUbbTlPKITCLB9UMDLsAf7WlDTzhVwwNQNqi7YxKb1Ddy7foCBE0oc+UBZEwf85IGDKs0\/JtG7Y0EHFkiUulwNMuDyA5KOlJh9jKUibxC97LtKEmHK8yYe54YJwtmaOJXSDXaEcENY8i1iec\/PHz5nLNRLAYv7o2SZNx78OBXFeHLYZhBcOip8EEINPUkjx5oFQ0PvUH4N+m\/OIVN9wuwVnzvJf55wE5BQ4pYZqk+f8BhxfHp9k2zXDXOBkh6yhsjjQBd6JmmZHW3AyIfKi+gw6lBAno1t6kiGPpC\/Ssd3wfOgZ9jkaRxZDK0vrq6kDiCObvIIfhvnhT1NW0Orj2pD4\/RZrEjQ32trcIlY1hGXDhcfRFdyVhRThlmboG2hcaJgvEyIWmyKkszs7MuLjv2hUrUbLgUxJs93LNHmWFYePCn5yJ8+dGEJGcKMGhDIAdJe47Rv\/fMJL8QZe3IiQo8jxJ+xZ1XkqMlVtDvDlDhJaoXzKYDm49nYqKgVSeCUtkC8dkQkHq6S1J2+ZDji0zIYyxjSRbh9x\/PP348\/fAL8CJM5YIVEox+fmu4XlypAPRcyhjEidBmmQ99WtvR0kezNApwlryvVZDS2\/N47QEm4RW5aPYU1IbLkB9GPjG7ccA1xl7gHjOCg0I0+Ov7aDaYMZmFheAJ5j4fiTsRxCyYq0SMMlGxr42gQlrQtLPsTD2bK59wE0DOMluvaesYAw5QhPA86AR2KYaZTGSYYtAz+yW7G1dv7nvzvlxmkKzR2WLMiJhtDdoXpIDdsCcODP2zpNe5MLCJZB0wE0kqPprWhyy5eUv4htdnu\/wW9ibWLNwFu\/OaIDE2qkfdFpjJ9\/JItJmBm28YfoXRpK9GmcX++IxpaBRgjFGzt+vZyHatrGWqC\/dljoO5taFJWhxmm3CXjGJ7lMzWis25OHAyOsshBvrcx8tMhp5djcI87QTND7SXD4pDmeaicLZZrPlpW\/fOrTpt5+JQsnRXsLizzYtxTmQP+xsDRkfj+xc8MCYmikpG6eJzUoMMomTwSSbxfDMsDSeJEbnouADGxsQHUjfMcZ\/n22bhWjuXmQHxFR\/hoylnEP5KkynuYSvjMY+aWD+X2DM07ANKu3UW6J2wQM2Sv4\/fO0vUWaKOOt21RMmUm50v+YliZRwF2oq1PD56\/qNhKvUo9\/nzeXGfV3rYE3oPlK8paoheJKhipqDDReYqX+lMb9BjAdZWAKqs\/C21\/lR73JlGC6heGbE\/IpfzPj0FDEIYWALiBmtP8EgyTmlPwGTiuR4NufVTyCicjHAe9jM1ozWK8mSkdDb\/a9Ls62MRMx51ft7lGuMJWs3WVEBSEBmVsUIoM6dvDm5QBEf3J+QZQOVzLGKqr6LoivGnkxlilOgRnsKTiJHKQcpoUU2bU8zgCtC\/zAKHoAChupDnA1nC+KKfDrGAINfj55U7szjXT\/fMZoA\/jAJ\/Xd\/JH0v0nebe7VgY9b4wZvx1LpyhhZmm9bKjCx9U4Jkua0c+N6KDa2rj7OnyK6upUPw1NVw3kF7GszPWMF55UthwRKYtR2S19FwHFflrjOmHxReYeJpZEaEifbAQvvCRcFiClutjeQGZNXay15+ZIWIRR2Yf0o6V1o4xxVqhMbnfKp03BQGOohFlzG8jO4XaMgowUAARlUAbQOrTNjSVVYU6MmqUkrlrsicY7ZGIAizlp56Y50OwOeE+1PLjrFYGiQEDHquJiO+P0mgY073DmIehiGfBwb8fgNmW5Js1C2sltCPNS64oP\/m++aBRoQUhg4GxVzkXmG13CisSgjUpYrTUcdpojnJgcY+Ca5jPPCvNzNMYTU5iODVeg1lB3FwhZ1bySO8K0M7Ugs5AuAOrckihZ3yQ2Co3tJywmtNOiGJ7s90jMalRhkVOCUHKUVg3z7lM1Pwq7IWw6lhQKT\/PfvVF9vu+rd+7yp7gz9kS1\/x\/X0cmkae1F8t+xtXGlipOABhhtr9CnmDR6mdOzhhb76d0noINwmxaDHTZnT6dCQdbxoQjRFvoB5G5L4ilYYRDEcnUmtHXPXiTyeRQhn6fvHdwJgTiQZIcHR89\/ea7pw+GSg30PfTHsV9iXJ2PYD5qLNKkHZ7GV\/Iqc9KhUJERGFZTNgzIJUiOPRxrZKxkXGOUpFMqZgSeH5ohIS\/8wXip0vCAzd6WgKX91dtueA85gKUWtB1tDWVi0kvnSWDEU3xtFOjaMNIxr089mJmF6HBBLhmn8C96CjTt1XRsTlJ0\/gHryiTBMy0NJfw5NX4qBhyQ5wP\/AIIh356ZvCGAIYbcMk5svDhAUqkgwCObEvFnvtm5PVA5SfYLWhRW1yn8WUh1vPbtXAJgVZ0Rn3maB5Rnf1\/PUqLfCp\/rvK+QzYIfb0xzqfz8dHyCjqCfjB+IosrnIPj0\/A8nkf+P\/BeaNgrfL5UXr7B0vRe3rN5XP8wtIPxcdc7FJTQvuXUV7c\/zX9V4b3EpzbNvXM0aL7m2nvCS2ZLih1tXNaMELmwP02KqjuCclIh3\/EoObeGOGPA0IFcovAoWsLdGcJbwC\/vCUH82yCP4xzwf9YPLDx7+9\/x3UrX\/cfJTTjK82iw+8Pq6xpwPFVbhq9HCdwNETlxfkRq9E3vxIi4CLOd5Aud0CEdNj4XrHAXmKxFQe3dRIXv9L90dXR+z5B4\/yt3eRsh6FmjeesAz1K\/dAfb6VNxOwMNil\/Ccbz\/J2F\/Z8S7NFEsv0S4Dm+sVWLQMkTuAn5\/sIMeuzuIlNJjbft4xNqmmzy\/R+P7K9m5iP\/x\/9nj\/4qLDBNwjqf\/oqZX60uoSBnTnSiBq1LUjoMPooGCn9tinr5YiIEnw8NuL\/R09vr7SAHftGFtkB93+246JLnajeTg\/4Wu832XJQ1bKGgd4m0eBrZdPcm2z86LoU0mvS\/ZDt7cbbI2xBxYpwwQ8yYMPp89yi5GhYcas\/dPlPWO9ELAE2oQExrFIsO9rwfymCRGLUXeAHzGvDQ7xSEw6PrEPnpnY2OvyQDMPUMFvtgGfy+rjnjmqiMg3G0vd3r\/dd\/DsmEeoghE+9iwz7Zkd\/VcjsvbvsglpT3r2CdXyi7tNCdvVxzWLX0FGFI6c7E9SWkwZzE95pUf+FZ3+9vtIJZ12QHTxqCke7PnfRHLSEY8fWm\/JONUj\/K3rjhF3QzdusCyEDin0TM+YCNX3n3ns+MjdUJqPjOf24dOFXs8njy72HZ+5G+rxmc3o7rHvnhhug3\/\/yr7NOIvQLz6oseMud0M1KfboqKwUc7zmbqh5Yn63Eq85RnM3rK7io0x7eAufoaP16ML+j7PMV48ZXmxDfGAHMw1uyBye\/+av7LjTa5P7cnZxceaSuPMPXV+SvWy\/GFmZDXw3U3UW5tbf\/uPWrCEdfvMO0zzseEFLunPu\/0\/Fkoj8b1yxi7XmlMyngOURp8X1MQvLZ9bLdTWzgf6D\/YetcZ8vbj8sTPE\/D69fVMheueH6wq833zpHr1seMHfNf1aeH2P5ALJM3eILs+8K4ywmqM5dWvi+ePkt+b83veX6NY1Mq5DHVnxn4evCaG\/M9yveduMFjYzzH3MqT\/7OeU2oMNSfcqy18xnE2uHshC5c+kolo5sfWDwOGmIikdfUH+Zy6z\/Zf843LrHF29Wbp9zpbh9Pvn169E3VxdpIY47j46OHDxsYcc1WGoiX\/rgy5e5284vjp48ffVuZdLvWruL40dMnR3UZqX6DCewX8ehR1XHsWksIxh4+ytv5rF493EwTB5Qx3z6tOoh5LaDXSSKDLP+mOssVtZYd4brHR4+\/q0oQ1M1cN6WyaiZ79PhJdakLmqgjdWlSHz\/NO8ucWvzVOawlhIFKlGKx+YOg1hCiCQToM9tP5k+mdSPedQjC+ehPRdxY+Oabwyd\/KrZqQeuF\/fO+gYaF348Pv\/sTIsjgow0UkEwsrkxfzCGYeSpCaLKYwNSir0BHCQ47fwuC4czaxRqMtwJ0my\/GIvINMLqFtioClM5AvzjitY3H+M7vHh8+np\/K11i1BajeGXLsDNiJs77EDjjiCqGrMhSeCOFrDYYTQj1dCoPXc8ZG3DeNUcaB9GQym4AOFKLFzaOUI9LOGS7XJZJQGTTp6NIASXGDtcxtm1qDtGxXKn9shp1H+GM5BO716SD00DC2PTdpMbDXCNNqkEyQF6SFMo6U+VkiL9BwdYIwyIT6RVC0Fogd6AvLnEaIVkT4b1dSyyRDv4KXH7Ic+I4wrwY8JrYkLCygKQzm0oDFI4TcWOnEorxnIFMGtjbhWDqVlb4QhBwYqggLbSHvEAgNP+L7ET8vxD5FObIg9WrBRwxiBOo04EL\/Pw==\" \/> \t\t<a href=\"https:\/\/www.pdf24.org\" target=\"_blank\" title=\"www.pdf24.org\" rel=\"nofollow\"><img src=\"http:\/\/www.mirandabanda.org\/cogblog\/wp-content\/plugins\/pdf24-post-to-pdf\/img\/pdf_32x32.png\" alt=\"\" border=\"0\" height=\"32\" \/><\/a> \t\t<span class=\"pdf24Plugin-cp-space\">&nbsp;&nbsp;<\/span> \t\t<span class=\"pdf24Plugin-cp-text\">Send article as PDF<\/span> \t\t<span class=\"pdf24Plugin-cp-space\">&nbsp;&nbsp;<\/span> \t\t<input class=\"pdf24Plugin-cp-input\" style=\"margin: 0px;\" type=\"text\" name=\"sendEmailTo\" placeholder=\"Enter email address\" \/> \t\t<input class=\"pdf24Plugin-cp-submit\" style=\"margin: 0px;\" type=\"submit\" value=\"Send\" \/> \t<\/form> <\/div>","protected":false},"excerpt":{"rendered":"<p>You read the last post and I can tell you&#8217;re unhappy with the size of the remote temp bytecodes. I can hear you grumbling that it has got to hurt performance. &quot;But these bytecodes are really rare in practice&quot; I claim. &quot;Prove it&quot;, you say. &quot;I took a look and there are loads of the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"http:\/\/www.mirandabanda.org\/cogblog\/wp-json\/wp\/v2\/posts\/14"}],"collection":[{"href":"http:\/\/www.mirandabanda.org\/cogblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.mirandabanda.org\/cogblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.mirandabanda.org\/cogblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.mirandabanda.org\/cogblog\/wp-json\/wp\/v2\/comments?post=14"}],"version-history":[{"count":0,"href":"http:\/\/www.mirandabanda.org\/cogblog\/wp-json\/wp\/v2\/posts\/14\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.mirandabanda.org\/cogblog\/wp-json\/wp\/v2\/media?parent=14"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.mirandabanda.org\/cogblog\/wp-json\/wp\/v2\/categories?post=14"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.mirandabanda.org\/cogblog\/wp-json\/wp\/v2\/tags?post=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}