/** Put ServerInfo into registry */
  private void put(ServerInfo info) {
    synchronized (serverInfos) {
      // store private copy !
      info = info.duplicate();

      updateServerInfoID(info);

      logger.debugPrintf("+++ Storing info:%s\n", info);

      ServerInfo prev = this.serverInfos.get(info.getID());

      if (prev == info) logger.infoPrintf(">>> updating ServerInfo:%s\n", info);
      else if (prev != null)
        logger.infoPrintf(">>> WARNING: Overwriting previous object with:%s\n", info);
      else logger.infoPrintf(">>> storing new ServerInfo:%s\n", info);

      this.serverInfos.put(info.getID(), info);
      // mark dirty:
      this.isSaved = false;
    }
  }
  public ServerInfo remove(ServerInfo info) {
    if (info == null) return null;

    logger.infoPrintf("--- Removing ServerInfo:%s\n", info);

    ServerInfo prev = null;

    synchronized (this.serverInfos) {
      String key = info.getID(); // return NULL if key hasn't been
      // set/info hasn't been stored !
      if (key != null) prev = this.getServerInfo(key);
      removeByKey(key);
      return prev;
    }
  }