July 26, 2016
1:08 p.m.
Hi. Look at UndefinedObject instance side methods. You will see class hierarchy protocol. For example nil understands #subclasses message: nil subclasses "==> {ProtoObject}" It implemented like this: UndefinedObject >>subclassesDo: aBlock "Evaluate aBlock with all subclasses of nil. Others are not direct subclasses of Class." ^ Class subclassesDo: [:cl | cl isMeta ifTrue: [aBlock value: cl soleInstance]]. So my question is: why it needs to be like that? And does it really needed? I removed all this methods and not saw any problem.