This is already the second attempt. I think a Ref is good enough. It's easy to convert to an object once you get it, but
it may be any object type actually. Once you resolve the Ref you get to see what it is and handle it, should you care. In
most cases I don't think you do, it's just a name. Whether we
have a special type here or not makes no difference in the
amount of work the caller has to do. The reality behind tags
aren't very complicated and abstracting things too much is
not very good and in this case doesn't simplify anything. It will just give us an extra object and class to handle.