@Override
            public T peek() {
                return copy != null ? copy : borrowedValue;
            }
Creates a reference to a value that is borrowed, and a copy needs to be
created in order to get a mutable reference.

@param borrowedValue The value being referenced.
@param copyFunction The function used to copy the value when a mutable
                    reference is requested via {@link #get()}.
@param <T> The type of value being referenced.
@return Returns the reference.
smithy-utils/src/main/java/software/amazon/smithy/utils/CopyOnWriteRef.java