docs: private TagModel feedTagStructureToGraph(Tag tag, Set<Tag> visited, int level)
      {
          if (visited.contains(tag))
              return this.getUniqueByProperty(TagModel.PROP_NAME, tag.getName(), true);
          visited.add(tag);
  
          LOG.fine(String.format("Creating TagModel for Tag: %s%s(%d)   '%s'  traits: %s", StringUtils.repeat(' ', level*2),
                  tag.getName(), tag.getContainedTags().size(), tag.getTitle(), tag.getTraits()));
          TagModel tagModel = this.create();
          tagModel.setName(tag.getName());
          tagModel.setTitle(tag.getTitle());
          tagModel.setColor(tag.getColor());
          tagModel.setRoot(tag.isPrime());
          tagModel.setPseudo(tag.isPseudo());
          if (null != tag.getTraits())
              tagModel.putAllTraits(tag.getTraits());
  
          tag.getContainedTags().forEach(tag2 -> {
              TagModel tag2model = feedTagStructureToGraph(tag2, visited, level+1);
              tagModel.addDesignatedTag(tag2model);
          });
  
          return tagModel;
      }