2yourself is also never truly sent. Other messages that may be directly interpreted by the VM, depending on the receiver, include: +- < > <= >= = ~= * /  == @ bitShift: // bitAnd: bitOr: at: at:put: size next nextPut: atEnd blockCopy: value value: do: new new: x y. Selectors that are never sent, because they are inlined by the compiler and transformed to comparison and jump bytecodes: ifTrue: ifFalse: ifTrue:ifFalse: ifFalse:ifTrue: and: or: whileFalse: whileTrue: whileFalse whileTrue to:do: to:by:do: caseOf: caseOf:otherwise: ifNil: ifNotNil: ifNil:ifNotNil: ifNotNil:ifNil: Attempts to send these messages to non-boolean objects can be intercepted and execution can be resumed with a valid boolean value by overriding mustBeBoolean in the receiver or by catching the NonBooleanReceiver exception.