useing decay in is_primitive