Determines whether the current LoggingContext can be accessed outside of its
nominal lifetime (for instance after the method has completed or a custom activity has been closed).
Since contexts can be pooled and reused, consumers must call the MakeSharable() method
if they want to keep a reference to the LoggingContext and access it after its nominal lifetime has completed.

When this property returns a non-null value, the SyntheticId property shall use the
value of the SyntheticParentId property as the parent identifier, instead of recursively building
the synthetic identifier based on ParentContext. You can set this property when you open a custom
activity by configuring the OpenActivityOptions object.

When this property returns a non-null value, the SyntheticId property shall return the
same value as the SyntheticRootId property, instead of starting with the id of the parent context. You can set this property when you open a custom
activity by configuring the OpenActivityOptions object.

Resumes the current context. Typically called when the state machine resumes execution, when the wait dependency
is satisfied (in case of async methods) or when the MoveNext() method is called (in case of iterators).

Suspends the current context. Typically called when starting to wait for a wait dependency (the operand of the await operator
in case of async methods), or after the MoveNext() method (in case of iterators).