A buffer owner may own its memory or provide a view into memory owned externally. When used as a non-owning view, the viewed memory must be guaranteed to outlive the buffer owner. When this lifetime guarantee cannot be satisfied, MakeOwned may be called on the reference to the buffer to clone into a new buffer owner that owns the memory.