It's trying to redeclare the function MakeNewKey public in Class2 where it is strict protected. See how we can do that with properties? We can redeclare them public in class2 without having to reimplement them but it does not look like we can do the same with methods. In other words, even when we are simply changing the visibility of a method between a class and its descendant, we have to implement that method, even if we are not introducing any new behavior. Does this make sense?
I'm trying to confirm that this is case.