there are two `is_function` and two `is_record`