<div dir="ltr">Hi there,<div><br></div><div>I'm was trying to understand why code like:</div><div><br></div><div><font face="courier new, monospace">a ifNil: [0] ifNotNil: [1]</font></div><div><br></div><div>when parsed got a corresponding <font face="courier new, monospace">MessageNode </font>with an <font face="courier new, monospace">#ifTrue:ifFalse</font> selector and a receiver of the form <font face="courier new, monospace">a == nil</font>. Following the trail lead me to the macro transformations in the <font face="courier new, monospace">MessageNode </font>class. It seems to me that several messages (some loops, boolean operations like <font face="courier new, monospace">and</font> and most of the <font face="courier new, monospace">if</font> messages) are transformed to a special or canonical form, when some conditions on the number of arguments of the blocks for example are satisfied, so that they can be inlined and therefore run faster. Is that correct? Could someone explain a little bit about why it is this way and which cases are chosen to be inlined?</div><div><br></div><div>Best,</div><div>Fernando.</div><div></div></div>