GRPrinter subclass: GRMappedPrinter [ | next block | GRMappedPrinter class >> block: aBlock next: aPrinter [ ^(self new) block: aBlock; next: aPrinter; yourself ] block: aBlock [ block := aBlock ] next: aPrinter [ next := aPrinter ] initialize [ super initialize. self block: [:value | value] ] print: anObject on: aStream [ next print: (block value: anObject) on: aStream ] ]