class ClassInfoCollector {

  public ClassInfo collect(AcceptingVisitor c) {
    return collected.computeIfAbsent(
        c.getClass(),
        (key) -> {
          final ClassInfo ci = new ClassInfo();
          ci.clazz = c.getClass();
          ci.name = aliasMapper.toName(c);
          ci.type = getQualifiedName(c.getClass());

          c.accept(new AttrInfoCollector(ci.attributes, aliasMapper));
          return ci;
        });
  }

  public  ClassInfoCollector(ClassNameMapper aliasMapper);

}