code: public Map<String, String> mergeInto(Map<String, String> core) {
          if (extra.size() == 0)
              return core;    // no supplemental descriptions
          if (core == null || core.size() == 0)
              return extra;   // only core descriptions
          switch(resolve) {
              case FAIL_FAST: {
                  final int total = core.size() + extra.size();
                  Map<String, String> merged = new HashMap<String,String>(core);
                  merged.putAll(extra);
                  if (total != merged.size()) {
                      throw new IllegalArgumentException(
                          "The supplemental material descriptions contains conflicting entries");
                  }
                  return Collections.unmodifiableMap(merged);
              }
              case OVERRIDDEN: {
                  Map<String,String> merged = new HashMap<String,String>(extra);
                  merged.putAll(core);
                  return Collections.unmodifiableMap(merged);
              }
              case OVERRIDE: {
                  Map<String,String> merged = new HashMap<String,String>(core);
                  merged.putAll(extra);
                  return Collections.unmodifiableMap(merged);
              }
              default:
                  throw new UnsupportedOperationException();
          }
      }
docs: Combine this supplemental material descriptions with those specified in
  the "core" parameter. This method has no side effect.
  
  @param core
  the core material descriptions to be supplemented;
  assumed to be unmodifiable.
  @return the merged material descriptions; never null.
  The returned map is always unmodifiable, assuming the passed in core
  material descriptions are unmodifiable.
  
  @throws IllegalArgumentException
  if this supplemental material descriptions contains
  conflicting entries
  @throws UnsupportedOperationException
  if the conflict resolution strategy is not supported