code: protected Identifier newIdentifier() {
  		while(true) {
  			Identifier id = new Identifier();
  			boolean available;
  			synchronized(sockets) {
  				available = !sockets.containsKey(id);
  			}
  			if(available) {
  				synchronized(idCheckers) {
  					for(IdentifierAvailabilityChecker idChecker : idCheckers) {
  						if(!idChecker.isIdentifierAvailable(id)) {
  							available = false;
  							break;
  						}
  					}
  				}
  				if(available) return id;
  			}
  		}
  	}
docs: Creates a random identifier that is not in the current set of sockets.
  <p>
  The identifier is checked against any registered {@link IdentifierAvailabilityChecker}.
  </p>
  @see  #addIdentifierAvailabilityChecker(com.aoindustries.messaging.base.AbstractSocketContext.IdentifierAvailabilityChecker)