private static IImmutableStack <object> GetLogicalOperationStack()
        {
            IImmutableStack <object> empty = (IImmutableStack <object>)CallContext.LogicalGetData(LogicalOperation.CallContextDataSlotName);

            if (empty == null)
            {
                empty = ImmutableLogicalOperationStack <object> .Empty;
                if (LogicalOperation.IsRunningInAdapter)
                {
                    empty = empty.Push(new object());
                }
                LogicalOperation.UpdateImmutableStack(empty);
            }
            return(empty);
        }
 private static void StopLogicalOperation()
 {
     LogicalOperation.UpdateImmutableStack(LogicalOperation.GetLogicalOperationStack().Pop());
 }
 private static void StartLogicalOperation(object data)
 {
     LogicalOperation.UpdateImmutableStack(LogicalOperation.GetLogicalOperationStack().Push(data));
 }