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?