class TagSet implements Iterable<Tag> {

    @Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;
        TagSet other = (TagSet) o;
        if (tags.size() != other.tags.size())
            return false;

        return tags.equals(other.tags);
    }

    public  TagSet(TreeMap<String, Tag> tags);

}