the method is `protected`, but since it is called with `self` instead of `static` it does not allow for subclasses to override it
the method is `protected`, but since it is called with `self` instead of `static` it does not allow for subclasses to override it