private void start(boolean initial) {
        if (wipUpdater.getAndIncrement(this) > 0) {
            // Another thread is already starting.
            return;
        }

        do {
            if (closed) {
                return;
            }
            if (!doStart(initial)) {
                wipUpdater.set(this, 0);
                return;
            }
            initial = false;
            // Repeat until all `start()` requests are handled.
            // Even if `doStart()` returns true, `start()` can be called recursively. Although `watchXXX()`
            // successfully opens WebSocket sessions, if `Watcher.onClose()` is called quickly, a retry request
            // may come in before the `start()` function finishes.
        } while (wipUpdater.decrementAndGet(this) > 0);
    }
Returns a newly created {@link KubernetesEndpointGroupBuilder} with the specified Kubernetes
{@link Config}.
kubernetes/src/main/java/com/linecorp/armeria/client/kubernetes/endpoints/KubernetesEndpointGroup.java