hasFoo is a long-standing pattern for boolean names.  What is sloppy about it.  It's a boolean.  isSingleton isn't a slam-dunk... which is why it's a boolean that could be false.  I'm not sure I follow here.