void completeStage(String stageName) {
            boolean done = false;
            synchronized (EndpointReadyFuture.this) {
                if (incomplete.remove(stageName)) {
                    if (incomplete.isEmpty()) {
                        done = true;
                    } else {
                        log.info("{} completed for endpoint {}. Still waiting for {}.",
                                stageName, endpointName, incomplete);
                    }
                }
            }
            if (done) {
                if (future.complete(null)) {
                    log.info("{} completed for endpoint {}. Endpoint is now READY.",
                            stageName, endpointName);
                }
            }
        }
Build the EndpointReadyFutures object.

@param authorizer    The authorizer to use, if any. Will be started.
@param info          Server information to be passed to the authorizer.

@return              The new futures object.
server-common/src/main/java/org/apache/kafka/server/network/EndpointReadyFutures.java