Inside TaxPayer, we want to use the derived class P directly in
the extortCash() method. However, the only way of getting an
instance without compiler warnings is to pass it in from the
subclass. We can solve this issue with a factory method
called getDetailedType() that returns the subclass.