code: private MultiValueMap<String, String> union(MultiValueMap<String, String> map1, MultiValueMap<String, String> map2) {
  		MultiValueMap<String, String> union = new LinkedMultiValueMap<String, String>(map1);
  		Set<Entry<String, List<String>>> map2Entries = map2.entrySet();
  		for (Iterator<Entry<String, List<String>>> entryIt = map2Entries.iterator(); entryIt.hasNext();) {
  			Entry<String, List<String>> entry = entryIt.next();
  			String key = entry.getKey();
  			List<String> values = entry.getValue();
  			for (String value : values) {
  				union.add(key, value);
  			}
  		}
  		return union;
  	}
docs: can't use putAll here because it will overwrite anything that has the same key in both maps