private void SetCurrent(Transaction newCurrent)
        {
            if (((this.dependentTransaction == null) && (this.committableTransaction == null)) && (newCurrent != null))
            {
                this.dependentTransaction = newCurrent.DependentClone(DependentCloneOption.RollbackIfNotComplete);
            }
            switch (this.interopOption)
            {
            case EnterpriseServicesInteropOption.None:
                this.threadContextData.CurrentTransaction = newCurrent;
                return;

            case EnterpriseServicesInteropOption.Automatic:
                Transaction.VerifyEnterpriseServicesOk();
                if (!Transaction.UseServiceDomainForCurrent())
                {
                    this.threadContextData.CurrentTransaction = newCurrent;
                    return;
                }
                this.PushServiceDomain(newCurrent);
                return;

            case EnterpriseServicesInteropOption.Full:
                Transaction.VerifyEnterpriseServicesOk();
                this.PushServiceDomain(newCurrent);
                return;
            }
        }