docs: private String emitInnerTypes() {
      StringBuilder itDefs = new StringBuilder();
      while(emittedInnerTypes.size() < innerTypes.size()) {
        for (Pair<StructureDefinition, ElementDefinition> it : new HashSet<Pair<StructureDefinition, ElementDefinition>>(innerTypes)) {
          if (!emittedInnerTypes.contains(it)) {
            itDefs.append("\n").append(genInnerTypeDef(it.getLeft(), it.getRight()));
            emittedInnerTypes.add(it);
          }
        }
      }
      return itDefs.toString();
    }