private DependencyObject FindAncestorOfType(Type type, int level, DependencyObject d, bool isTracing)
        {
            if (type == null)
            {
                if (TraceData.IsEnabled)
                {
                    TraceData.Trace(TraceEventType.Error, TraceData.RefAncestorTypeNotSpecified);
                }
                return(null);
            }
            if (level < 1)
            {
                if (TraceData.IsEnabled)
                {
                    TraceData.Trace(TraceEventType.Error, TraceData.RefAncestorLevelInvalid);
                }
                return(null);
            }

            // initialize search to start at the parent of the given DO
            FrameworkObject fo = new FrameworkObject(d);

            fo.Reset(fo.GetPreferVisualParent(true).DO);

            while (fo.DO != null)
            {
                if (isTracing)
                {
                    TraceData.Trace(TraceEventType.Warning,
                                    TraceData.AncestorLookup(
                                        type.Name,
                                        TraceData.Identify(fo.DO)));
                }

                if (type.IsInstanceOfType(fo.DO))   // found it!
                {
                    if (--level <= 0)
                    {
                        break;
                    }
                }

                fo.Reset(fo.PreferVisualParent.DO);
            }

            return(fo.DO);
        }
        // Token: 0x06007608 RID: 30216 RVA: 0x0021A9AC File Offset: 0x00218BAC
        private DependencyObject FindAncestorOfType(Type type, int level, DependencyObject d, bool isTracing)
        {
            if (type == null)
            {
                if (TraceData.IsEnabled)
                {
                    TraceData.Trace(TraceEventType.Error, TraceData.RefAncestorTypeNotSpecified);
                }
                return(null);
            }
            if (level < 1)
            {
                if (TraceData.IsEnabled)
                {
                    TraceData.Trace(TraceEventType.Error, TraceData.RefAncestorLevelInvalid);
                }
                return(null);
            }
            FrameworkObject frameworkObject = new FrameworkObject(d);

            frameworkObject.Reset(frameworkObject.GetPreferVisualParent(true).DO);
            while (frameworkObject.DO != null)
            {
                if (isTracing)
                {
                    TraceData.Trace(TraceEventType.Warning, TraceData.AncestorLookup(new object[]
                    {
                        type.Name,
                        TraceData.Identify(frameworkObject.DO)
                    }));
                }
                if (type.IsInstanceOfType(frameworkObject.DO) && --level <= 0)
                {
                    break;
                }
                frameworkObject.Reset(frameworkObject.PreferVisualParent.DO);
            }
            return(frameworkObject.DO);
        }