I agree that `_contextThunk` should never return null. But thanks to the lack of support in the C# type system, there's no guarantee it won't. Yes, it'd be a programming error if that happened, but we should fail fast and make it clear that's why. So maybe on each call to it either `Debug.Assert` it's not null OR check the result of the call to `_contextThunk` and throw an exception if it's null.

Also, i noticed we forgot to check the arguments of the constructor. So it's possible that `_contextThunk` is null in the ctor resulting in a `NullReferenceException`. It'd be more helpful if that were an `ArgumentNullException`. BTW, I'm keenly aware that this is probably all my fault. :)