A cleaner implementation would be to define this method in UndefinedObject and Collection only. It should not appear in Object, the same way #isEmptyOrNil is defined.  ----------------- Benoit St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero". (A. Einstein) From: Sebastian Sastre <sebastian@flowingconcept.com> To: Pharo Development List <pharo-dev@lists.pharo.org> Sent: Sunday, January 4, 2015 5:27 PM Subject: [Pharo-dev] Object>>ifNilOrEmpty: aBlock Hi guys, Iâve started to use this little one: Object>>ifNilOrEmpty: aBlock    self ifNil: [ ^ aBlock value ].       (self isCollection and: [    self isEmpty ]) ifTrue: [ ^ aBlock value ].    ^ self. It allows you to do the widely known JavaScript one-liner: var stuff = this.thing || âsome default value for when this.thing is undefined, null or an empty stringâ. but in smalltalk in this way: stuff := self thing ifNilOrEmpty: [ âsome default value for when self thing is nil or an empty stringâ ] simple thing feels practical and nice :)