@Override
    public T peek() {
        if (immutableOwned != null) {
            return immutableOwned;
        } else if (owned != null) {
            // The reference has not yet created an immutable wrapper of the owned value.
            immutableOwned = applyImmutableWrapper(owned);
            return immutableOwned;
        } else if (borrowed != null) {
            // The reference already contains an immutable borrowed value.
            return borrowed;
        } else if (emptyCtorOptimization != null) {
            return applyEmptyCtorOptimization();
        } else {
            // Create and store an owned value, then create an immutable borrowed reference recursively.
            setOwned(applyCtor());
            return peek();
        }
    }
Default implementation of {@link BuilderRef}.

<p>This class is not threadsafe; it should only be used to build up
other objects using {@link #copy()}.

@param <T> The type of value being built, borrowed, and copied.
smithy-utils/src/main/java/software/amazon/smithy/utils/DefaultBuilderRef.java