On Jan 5, 2015, at 2:56 PM, Henrik Johansen <henrik.s.johansen@veloxit.no> wrote:

Of course, you can still do nonsense like
stuff := aCollection ifNilOrEmpty: [42]
but at least *that* problem is easier to pinpoint when later, a debugger with a user of stuff that expected it to be a collection pops up.
If the origin of stuff as a single instance is lost to the mists of time (say, Object implements ifNilOrEmpty: and someone called stuff: with an Object without error), it's easier to end up with a solution of "fixing" the use to
(stuff isKindOf: Collection) "or is that isCollection?"
ifTrue: ["Code handling each entry"] 
ifFalse: ["Code handling single instance"]

And now there's two stinks.

Cheers,
Henry

Ah, right. I get your point now. 

I'd see that as an abuse.

I���ve mentioned a couple of examples before, the ���good��� uses of this convenience are meant for handling the empty string or nil frequent case and APIs that are more functionally inspired (like when they use an Option / Some / None / Nothing as response and you need to normalize that into smalltalk style)