public synchronized void updateStatus(PotentialServer old, PotentialServer srv) {
        // DEBUG assert srv == null || (srv == null && old == null) || old.equals(srv)  : "Invalid replace";
        int adCount = 0;
        int unknownCount = 0;
        for (int i = 0; i < serverMatches.length; i++) {
            if (serverMatches[i] == old) {
                serverMatches[i] = srv;
            }
            if (serverMatches[i] != null) {
                if (serverMatches[i].isServer()) {
                    adCount++;
                } else if (!serverMatches[i].isFinal()) {
                    unknownCount++;
                }
            }
        }
        state = (adCount > 0 ? (unknownCount > 0 ? State.ADVERTISEMENT_PENDING : State.ADVERTISEMENT)
                             : (unknownCount > 0 ? State.UNKNOWN : State.CLEAN));
    }