@Override
    public String asHeaderValue() {
        if (headerValue != null) {
            return headerValue;
        }

        final StringBuilder buf = newHeaderValueBuffer();
        if (onlyIfCached) {
            buf.append(", only-if-cached");
        }
        if (maxStaleSeconds >= 0) {
            buf.append(", max-stale=").append(maxStaleSeconds);
        } else if (maxStaleSeconds == UNSPECIFIED_MAX_STALE) {
            buf.append(", max-stale");
        }
        if (minFreshSeconds >= 0) {
            buf.append(", min-fresh=").append(minFreshSeconds);
        }
        if (staleWhileRevalidateSeconds >= 0) {
            buf.append(", stale-while-revalidate=").append(staleWhileRevalidateSeconds);
        }
        if (staleIfErrorSeconds >= 0) {
            buf.append(", stale-if-error=").append(staleIfErrorSeconds);
        }

        if (buf.length() == 0) {
            return headerValue = "";
        } else {
            return headerValue = buf.substring(2);
        }
    }
Returns a newly created {@link ClientCacheControlBuilder} which has the same initial directives with
this {@link ClientCacheControl}.
core/src/main/java/com/linecorp/armeria/common/ClientCacheControl.java