internal static Transaction FastGetTransaction(TransactionScope currentScope, ContextData contextData, out Transaction contextTransaction)
        {
            Transaction transaction = null;

            contextTransaction = null;
            contextTransaction = contextData.CurrentTransaction;
            switch (InteropMode(currentScope))
            {
            case EnterpriseServicesInteropOption.None:
                transaction = contextTransaction;
                if ((transaction == null) && (currentScope == null))
                {
                    if (!TransactionManager.currentDelegateSet)
                    {
                        return(GetContextTransaction(contextData));
                    }
                    transaction = TransactionManager.currentDelegate();
                }
                return(transaction);

            case EnterpriseServicesInteropOption.Automatic:
                if (!UseServiceDomainForCurrent())
                {
                    return(contextData.CurrentTransaction);
                }
                return(GetContextTransaction(contextData));

            case EnterpriseServicesInteropOption.Full:
                return(GetContextTransaction(contextData));
            }
            return(transaction);
        }