@@ -0,0 +1,1940 @@
+package org.ihtsdo.otf.ts.helpers;%0A%0Aimport java.util.HashMap;%0Aimport java.util.HashSet;%0Aimport java.util.Map;%0A%0Aimport javax.xml.bind.annotation.XmlRootElement;%0A%0A/**%0A * Container for key value pairs.%0A */%0A@XmlRootElement(name = %22keyValuePair%22)%0Apublic class KeyValuesMap %7B%0A%0A  /** The map. */%0A  private Map%3CString, HashSet%3CString%3E%3E map;%0A%0A  /**%0A   * Instantiates an empty %7B@link KeyValuesMap%7D.%0A   */%0A  public KeyValuesMap() %7B%0A    map = new HashMap%3C%3E();%0A  %7D%0A%0A  /**%0A   * Instantiates a %7B@link KeyValuesMap%7D from the specified parameters.%0A   *%0A   * @param map the map%0A   */%0A  public KeyValuesMap(KeyValuesMap map) %7B%0A    this.map = map.getMap();%0A  %7D%0A%0A  /**%0A   * Gets the map.%0A   *%0A   * @return the map%0A   */%0A  public Map%3CString, HashSet%3CString%3E%3E getMap() %7B%0A    return map;%0A  %7D%0A%0A  /**%0A   * Sets the map.%0A   *%0A   * @param map the map%0A   */%0A  public void setMap(Map%3CString, HashSet%3CString%3E%3E map) %7B%0A    this.map = map;%0A  %7D%0A%0A  /**%0A   * Put key and value into the map.%0A   *%0A   * @param key the key%0A   * @param value the value%0A   */%0A  public void put(String key, String value) %7B%0A    if (!map.containsKey(key)) %7B%0A      HashSet%3CString%3E values = new HashSet%3C%3E();%0A      map.put(key, values);%0A    %7D%0A    map.get(key).add(value);%0A  %7D%0A%0A  /*%0A   * (non-Javadoc)%0A   * %0A   * @see java.lang.Object#hashCode()%0A   */%0A  @Override%0A  public int hashCode() %7B%0A    final int prime = 31;%0A    int result = 1;%0A    result = prime * result + ((map == null) ? 0 : map.hashCode());%0A    return result;%0A  %7D%0A%0A  /*%0A   * (non-Javadoc)%0A   * %0A   * @see java.lang.Object#equals(java.lang.Object)%0A   */%0A  @Override%0A  public boolean equals(Object obj) %7B%0A    if (this == obj)%0A      return true;%0A    if (obj == null)%0A      return false;%0A    if (getClass() != obj.getClass())%0A      return false;%0A    KeyValuesMap other = (KeyValuesMap) obj;%0A    if (map == null) %7B%0A      if (other.map != null)%0A        return false;%0A    %7D else if (!map.equals(other.map))%0A      return false;%0A    return true;%0A  %7D%0A%7D%0A

Add KeyValuesMap back in.