#class Boolean(Object) { "TODO: do i need to really define methods defined in True and False here? and call subclassResponsibiltiy?" } #class True(Boolean) { #method not { ^false } #method & aBoolean { ^aBoolean } #method | aBoolean { ^true } #method and: aBlock { ^aBlock value } #method or: aBlock { ^true } #method ifTrue: trueBlock ifFalse: falseBlock { ^trueBlock value. } #method ifTrue: trueBlock { ^trueBlock value. } #method ifFalse: falseBlock { ^nil. } } #class False(Boolean) { #method not { ^true } #method & aBoolean { ^false } #method | aBoolean { ^aBoolean } #method and: aBlock { ^false } #method or: aBlock { ^aBlock value } #method ifTrue: trueBlock ifFalse: falseBlock { ^falseBlock value. } #method ifTrue: trueBlock { ^nil. } #method ifFalse: falseBlock { ^falseBlock value. } }