docs: public RuntimeTypeAdapterFactory<T> registerSubtype(Class<? extends T> type, String label) {
      if (type == null || label == null) {
        throw new NullPointerException();
      }
      if (subtypeToLabel.containsKey(type) || labelToSubtype.containsKey(label)) {
        throw new IllegalArgumentException("types and labels must be unique");
      }
      labelToSubtype.put(label, type);
      subtypeToLabel.put(type, label);
      return this;
    }