/** Returns deep copy of this map instance. */
  public MediaSSRCGroupMap copy() {
    Map<String, List<SSRCGroup>> mapCopy = new HashMap<String, List<SSRCGroup>>();

    for (String media : groupMap.keySet()) {
      List<SSRCGroup> listToCopy = new ArrayList<SSRCGroup>(groupMap.get(media));
      List<SSRCGroup> listCopy = new ArrayList<SSRCGroup>(listToCopy.size());

      for (SSRCGroup group : listToCopy) {
        listCopy.add(group.copy());
      }

      mapCopy.put(media, listCopy);
    }

    return new MediaSSRCGroupMap(mapCopy);
  }