/// <summary>
            /// Binds the setting proxy to another pipeline stage configuration.
            /// </summary>
            /// <param name="configuration">The configuration the proxy should bind to.</param>
            /// <param name="raiseChangedEvent">
            /// <c>true</c> to notify clients that the setting has changed;
            /// otherwise <c>false</c>.
            /// </param>
            void IUntypedSettingProxy.SetProxyTarget(IProcessingPipelineStageConfiguration configuration, bool raiseChangedEvent)
            {
                lock (mSync)
                {
                    if (mConfiguration != configuration)
                    {
                        // Exchange the configuration, rebind the PropertyChanged handler and fire the PropertyChanged event
                        // to notify clients to re-evaluate the setting.
                        mConfiguration = configuration;
                        mSetting?.UnregisterSettingChangedEventHandler(OnSettingPropertyChanged);
                        mSetting = mValueToStringConverter != null && mStringToValueConverter != null
                                                                   ? mConfiguration.RegisterSetting(mSettingName, mDefaultSettingValue, mValueToStringConverter, mStringToValueConverter)
                                                                   : mConfiguration.RegisterSetting(mSettingName, mDefaultSettingValue);

                        mSetting?.RegisterSettingChangedEventHandler(OnSettingPropertyChanged, false);
                        if (raiseChangedEvent)
                        {
                            mStage.ProcessSettingChanged(this);
                        }
                    }
                }
            }