When instantiating a generic type, use hierarchy type if class is abstract