separate warning_handle_ from warning_level_, to prevent awkawrd situation when you need to reset warning_handle_ but you actually still need warning_level_ value