// Token: 0x06000BB5 RID: 2997 RVA: 0x0002B024 File Offset: 0x00029224
        internal override object GetValue(BaseValueSourceInternal valueSource)
        {
            object themeDictionaryLock = SystemResources.ThemeDictionaryLock;
            object result;

            lock (themeDictionaryLock)
            {
                if (base.Dictionary != null)
                {
                    object key = this.Key;
                    SystemResources.IsSystemResourcesParsing = true;
                    bool   flag2;
                    object value;
                    try
                    {
                        value = base.Dictionary.GetValue(key, out flag2);
                        if (flag2)
                        {
                            this.Value      = value;
                            base.Dictionary = null;
                        }
                    }
                    finally
                    {
                        SystemResources.IsSystemResourcesParsing = false;
                    }
                    if ((key is Type || key is ResourceKey) && this._canCacheAsThemeResource && flag2)
                    {
                        SystemResources.CacheResource(key, value, false);
                    }
                    result = value;
                }
                else
                {
                    result = this.Value;
                }
            }
            return(result);
        }
        /// <summary>
        /// Search just the App and Theme Resources.
        /// </summary>
        /// <param name="serviceProvider"></param>
        /// <param name="allowDeferredReference"></param>
        /// <param name="mustReturnDeferredResourceReference"></param>
        /// <returns></returns>
        private object FindResourceInAppOrSystem(IServiceProvider serviceProvider,
                                                 bool allowDeferredReference,
                                                 bool mustReturnDeferredResourceReference)
        {
            object val;

            if (!SystemResources.IsSystemResourcesParsing)
            {
                object source;
                val = FrameworkElement.FindResourceFromAppOrSystem(ResourceKey,
                                                                   out source,
                                                                   false,  // disableThrowOnResourceFailure
                                                                   allowDeferredReference,
                                                                   mustReturnDeferredResourceReference);
            }
            else
            {
                val = SystemResources.FindResourceInternal(ResourceKey,
                                                           allowDeferredReference,
                                                           mustReturnDeferredResourceReference);
            }
            return(val);
        }