Protected is the correct access specifier and not using override for C++98 compatibility (doesn't cost anything). Fix in optimize condition.