runtime checking for final type has been replaced with compile-time