Abstract methods don't need NotImplementedError