Semântica rápida em relação ao acesso ao dicionário

Atualmente estou lendo o excelenteSwift avançado livro de objc.io, e estou encontrando algo que não entendo.

Se você executar o código a seguir em um playground, notará que, ao modificar uma estrutura contida em um dicionário, uma cópia é feita pelo acesso ao subscrito, mas parece que o valor original no dicionário é substituído pela cópia. Eu não entendo o porquê. O que exatamente está acontecendo?

Além disso, existe uma maneira de evitar a cópia? Segundo o autor do livro, não há, mas eu só quero ter certeza.

import Foundation

class Buffer {
    let id = UUID()
    var value = 0

    func copy() -> Buffer {
        let new = Buffer()
        new.value = self.value
        return new
    }
}

struct COWStruct {
    var buffer = Buffer()

    init() { print("Creating \(buffer.id)") }

    mutating func change() -> String {
        if isKnownUniquelyReferenced(&buffer) {
            buffer.value += 1
            return "No copy \(buffer.id)"
        } else {
            let newBuffer = buffer.copy()
            newBuffer.value += 1
            buffer = newBuffer
            return "Copy \(buffer.id)"
        }
    }
}

var array = [COWStruct()]
array[0].buffer.value
array[0].buffer.id
array[0].change()
array[0].buffer.value
array[0].buffer.id


var dict = ["key": COWStruct()]
dict["key"]?.buffer.value
dict["key"]?.buffer.id
dict["key"]?.change()
dict["key"]?.buffer.value
dict["key"]?.buffer.id

// If the above `change()` was made on a copy, why has the original value changed ?
// Did the copied & modified struct replace the original struct in the dictionary ?