That seems good; I kind of feel like that is a great example of why having one method for `find_or_create` is dubious, since it pretty much assures us of having branching inside it -- and that adds substantial complexity.

If that need existing, I would rather the more drastic move of splitting the functions and ensuring that it was sane to find or create in the caller open-coded.  (Which, ideally, would look something akin to `thing = find(...) or create(...)`, thus being sane to open-code. :)