AST Pointer Contexts

Each thread maintains its own set of nested AST contexts, so when astEndastEnd is called, only Objects that are locked by the current thread will be annulled.

If an ObjectObject is unlocked by a thread using astUnlockastUnlock, it is exempted from context handling so that subsequent invocations of astEnd will not cause it to be annulled (this is similar to using astExemptastExempt on the Object). When the Object is subsequently locked by another thread using astLockastLock, it will be imported into the context that was active when astLock was called.