code: public TypeMetadata combineAll(TypeMetadata other) {
          Assert.checkNonNull(other);
  
          TypeMetadata out = new TypeMetadata();
          Set<Entry.Kind> keys = new HashSet<>(contents.keySet());
          keys.addAll(other.contents.keySet());
  
          for(Entry.Kind key : keys) {
              if (contents.containsKey(key)) {
                  if (other.contents.containsKey(key)) {
                      out.add(key, contents.get(key).combine(other.contents.get(key)));
                  } else {
                      out.add(key, contents.get(key));
                  }
              } else if (other.contents.containsKey(key)) {
                  out.add(key, other.contents.get(key));
              }
          }
          return out;
      }
docs: Return a copy of this TypeMetadata with the metadata entry for all kinds from {@code other}
  combined with the same kind from this.
  
  @param other the TypeMetadata to combine with this
  @return a new TypeMetadata updated with all entries from {@code other}