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

        final StringBuilder buf = newHeaderValueBuffer();
        if (cachePublic) {
            buf.append(", public");
        }
        if (cachePrivate) {
            buf.append(", private");
        }
        if (immutable) {
            buf.append(", immutable");
        }
        if (mustRevalidate) {
            buf.append(", must-revalidate");
        }
        if (proxyRevalidate) {
            buf.append(", proxy-revalidate");
        }
        if (sMaxAgeSeconds >= 0) {
            buf.append(", s-maxage=").append(sMaxAgeSeconds);
        }

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