Bicycle class
Mountain bike behavior implemented inside the Bicycle class
RED: MountainBike extends Bike is NOT A GOOD IDEA
RoadBike introduced, Bicycle is now abstract, tests are Green
extract common part of spares() into Bicycle.spares()
reduce duplication by making sparse() a template-method that calls abstract method
eliminate the 'super.spares().merge' duplication by yet another method-templating
delegate tire-size-calculation
delegate custom-spares-calculation
CustomSpares now becomes stateless - takes a record object instread of maintaing its own state
delegates are now constant objects
delegates pulled up to the Bicycle class