If a subclass defines a static method with the same signature as a
static method in the superclass, then the method in the
subclass hides the one in the
superclass.
The version of the overridden instance method that gets invoked is the one
in the subclass.
The version of the hidden static method that gets invoked depends on
whether it is invoked from the superclass or the subclass.