To start with, why do you CARE whether a particular method is inlined or not?

I care because it makes ���everything is a message��� a lie! And I suspect (no proof and could be wrong) it���s an optimization that only made sense with the hardware constraints of 40+ years ago. Arguing against premature optimization is hardly something I just made up ;-)

This makes absolutely no sense to me. What makes you think that the combination "_ isNil ifFalse: [_]" will NOT be inlined?

I may have been unclear. My intent was to communicate: ���I���d like to stop ALL* inlining of messages by default if possible���

*or as many as practical

The thing that rings loud alarm bells for me is there being "long chains" in the first place.

I agree that it is in general a smell, but long chains was tangential to the intention above

Can you give an example?

I don���t know if I can think of one that���s not contrived��� Wrapping something external? Squeak���s AppleScript support used to mirror the underlying AS, which is pretty much exactly that.

In my own programming, I've generally found that nils turning up in the middle of a chain indicates a serious design error somewhere.

Agreed. See smell comment above.