I'm wondering about a race here, I presume this isn't a concern? If multiple threads change the value at the observed key path, not using the change dictionary could result in a dropped value / duplicate callback. I doubt there are many use scenarios that need such fine grained fidelity, but I thought I'd ask.