private void ListenForFreezableChanges(object resource)
        {
            if (!ReadInternalState(InternalState.IsListeningForFreezableChanges))
            {
                // If this value is an unfrozen Freezable object, we need
                //  to listen to its changed event in order to properly update
                //  the cache.
                Freezable resourceAsFreezable = resource as Freezable;
                if (resourceAsFreezable != null && !resourceAsFreezable.IsFrozen)
                {
                    if (_weakContainerRRE == null)
                    {
                        _weakContainerRRE = new ResourceReferenceExpressionWeakContainer(this);
                    }

                    // Hook up the event to the weak container to prevent memory leaks (Bug436021)
                    _weakContainerRRE.AddChangedHandler(resourceAsFreezable);
                    WriteInternalState(InternalState.IsListeningForFreezableChanges, true);
                }
            }
        }
 private void ListenForFreezableChanges(object resource)
 {
     if (!ReadInternalState(InternalState.IsListeningForFreezableChanges))
     {
         // If this value is an unfrozen Freezable object, we need
         //  to listen to its changed event in order to properly update
         //  the cache.
         Freezable resourceAsFreezable = resource as Freezable;
         if( resourceAsFreezable != null && !resourceAsFreezable.IsFrozen )
         {
             if (_weakContainerRRE == null)
             {
                 _weakContainerRRE = new ResourceReferenceExpressionWeakContainer(this);
             }
             
             // Hook up the event to the weak container to prevent memory leaks (Bug436021)
             _weakContainerRRE.AddChangedHandler(resourceAsFreezable);
             WriteInternalState(InternalState.IsListeningForFreezableChanges, true);
         }
     }
 }