Why should be `protected` since it is an abstract class?