I had some chaining that was getting too complex due to many nil checks, so I started to refactor using a Null Object. However, Iâm struggling a bit with the refactor due to inlining. Since #ifNil: variants might be inlined, it seems that something like: anObject with a long chain of messages ifNotNil: \[ :result | ââ¦â \] must be changed into something like: anObject with a long chain of messages isNil ifFalse: \[ anObject with a long chain of messages ââ¦â \]. Obviously, I can use a temp to have: result := anObject with a long chain of messages. result isNil ifFalse: \[ result ââ¦â \]. But both seem ugly and make me question using this pattern. 1. What am I missing? 2. After 40+ years of Mooreâs Law, can we turn off these inlines by default?