/// <summary>
        /// Pushes the specified scope.
        /// </summary>
        /// <param name="scope">The scope.</param>
        /// <param name="combinationLogic">The combination logic.</param>
        public static void Push(T scope, TransactionCombinationLogic combinationLogic)
        {
            if (m_stack == null)
            {
                m_stack = new Stack <T>();
            }

            switch (combinationLogic)
            {
            case TransactionCombinationLogic.Combine:
                if (Current == null)
                {
                    m_stack.Push(scope);
                }
                scope.m_target = Current;
                break;

            case TransactionCombinationLogic.RequiresNew:
                scope.m_target = scope;
                m_stack.Push(scope);
                break;

            default:
                throw new NotImplementedException();
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="LogicalDisposeScope"/> class.
 /// </summary>
 /// <param name="combinationLogic">The combination logic.</param>
 public LogicalDisposeScope(TransactionCombinationLogic combinationLogic)
 {
     LogicalTransactionScope <LogicalDisposeScope> .Push(this, combinationLogic);
 }