Why do protected virtual methods lead to an explosion?
Virtual = subclasses can override them.
So basically, any subclass can call the method, and that method may be overridden in any other subclass.
Not necessarily. If you create a diamond (or a spiderweb :) inheritence pattern, the amount of places the method can be called and overriden grows fast.