Adding `final` can allow gcc to devirtualize a call. Request compiler warnings wherever `final` would improve this. As of this writing, there are no places where `final` would be helpful and would also be wrong, so this is enabled everywhere.