If it is empty, won't it return a null? `has*` must return  bool