refactor: is_virtual_function