Inheritance: AbstractMessage, ITaggedTransaction
            private void MarkAsRunAway(ITransaction parent, DefaultTaggedTransaction transaction)
            {
                if (!transaction.HasChildren())
                {
                    transaction.AddData("RunAway");
                }

                transaction.Status = PureCatConstants.SUCCESS;
                transaction.Standalone = true;
                transaction.Complete();
            }
        public ITaggedTransaction NewTaggedTransaction(string type, string name, string tag)
        {
            // this enable CAT client logging cat message without explicit setup
            if (!_manager.HasContext())
            {
                _manager.Setup();
            }

            if (_manager.CatEnabled)
            {
                IMessageTree tree = _manager.ThreadLocalMessageTree;

                if (tree.MessageId == null)
                {
                    tree.MessageId = CreateMessageId();
                }

                ITaggedTransaction transaction = new DefaultTaggedTransaction(type, name, tag, _manager);

                _manager.Start(transaction, true);
                return transaction;
            }
            else
            {
                return NullMessage.TAGGEDTRANSACTION;
            }
        }