public Map<String, ProxyGroup> getGroups() {
    // return deep copy
    final Map<String, ProxyGroup> result = new HashMap<>(myGroups);
    for (Map.Entry<String, ProxyGroup> entry : myGroups.entrySet()) {
      result.put(entry.getKey(), entry.getValue().copy());
    }
    return result;
  }
public Map<String, ProxyGroup> getGroups()