The comments for ThreadContext indicate that it "is managed on a per thread basis" however looking at the source code I do not see how this works, since Thread.Context.s_properties and ThreadContextProperties.s_threadLocalSlot are both static data members.
What is the mechanism that causes the properties to be stored per thread?
