private void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (!LogicalOperation.IsRunningInAdapter && LogicalOperation.GetLogicalOperationStack().Peek() != this.data)
         {
             throw new InvalidOperationException("Logical operation stack has been corrupted");
         }
         LogicalOperation.StopLogicalOperation();
         Trace.CorrelationManager.ActivityId = this.previousActivityId;
     }
 }