public override Collection <FilterInfo> GetFilterPipeline()
        {
            List <FilterInfo> filters       = new List <FilterInfo>(_innerDescriptor.GetFilterPipeline());
            List <FilterInfo> returnFilters = new List <FilterInfo>(filters.Count);

            for (int i = 0; i < filters.Count; i++)
            {
                // If this filter has been wrapped already, use as is
                if (FilterTracer.IsFilterTracer(filters[i].Instance))
                {
                    returnFilters.Add(filters[i]);
                }
                else
                {
                    IEnumerable <FilterInfo> filterTracers = FilterTracer.CreateFilterTracers(
                        filters[i],
                        _traceWriter
                        );
                    foreach (FilterInfo filterTracer in filterTracers)
                    {
                        returnFilters.Add(filterTracer);
                    }
                }
            }

            return(new Collection <FilterInfo>(returnFilters));
        }
        public override Collection <IFilter> GetFilters()
        {
            List <IFilter> filters       = new List <IFilter>(_innerDescriptor.GetFilters());
            List <IFilter> returnFilters = new List <IFilter>(filters.Count);

            for (int i = 0; i < filters.Count; i++)
            {
                if (FilterTracer.IsFilterTracer(filters[i]))
                {
                    returnFilters.Add(filters[i]);
                }
                else
                {
                    IEnumerable <IFilter> filterTracers = FilterTracer.CreateFilterTracers(
                        filters[i],
                        _traceWriter
                        );
                    foreach (IFilter filterTracer in filterTracers)
                    {
                        returnFilters.Add(filterTracer);
                    }
                }
            }

            return(new Collection <IFilter>(returnFilters));
        }