I checked and tested: they were all override. If you change that to virtual, the compiler complains the previous one is hidden, which you can fix by using both virtual and reintroduce. But, as the documentation says:
"Classes have virtual methods, just as objects do. There is however a difference between the two. For objects, it is sufficient to redeclare the same method in a descendent object with the keyword virtual to override it. For classes, the situation is different: virtual methods must be overridden with the override keyword. Failing to do so, will start a new batch of virtual methods, hiding the previous one. The Inherited keyword will not jump to the inherited method, if Virtual was used."
So that won't work. Although that is needed if you change the parameters or return type, it becomes a different function.
So how should it work? What is it I don't understand?
Edit: ah, found it. There was a method with the same name, but a default parameter.