def METHOD_NAME(self, name: str, parent: UUID = None) -> Tag2:
    """Create a new tag and add it to the store."""
    name = name if not name.startswith('@') else name[1:]
    try:
        return self.lookup_names[name]
    except KeyError:
        tid = uuid4()
        tag = Tag2(id=tid, name=name)
        if parent:
            self.add(tag, parent)
        else:
            self.data.append(tag)
            self.lookup[tid] = tag
            self.lookup_names[name] = tag
        self.emit('added', tag)
        return tag