/// <summary>
        ///     References the observer builder.
        /// </summary>
        /// <typeparam name="TResult">The type of the result.</typeparam>
        /// <param name="propertyExpression">The property expression.</param>
        /// <returns>
        ///     Reference Property Observer Builder.
        /// </returns>
        public IPropertyReferenceObserverBuilder <TResult> ReferenceObserverBuilder <TResult>(
            Expression <Func <TResult> > propertyExpression)
            where TResult : class
        {
            var builder = new PropertyReferenceObserverBuilder <TResult>(propertyExpression)
            {
                ObserverFlag     = observerFlag,
                IsAutoActivate   = this.isAutoActivate,
                IsSilentActivate = this.isSilentActivate,
            };

            return(builder);
        }
        /// <summary>
        ///     References the observer builder.
        /// </summary>
        /// <typeparam name="TParameter1">The type of the parameter1.</typeparam>
        /// <typeparam name="TResult">The type of the result.</typeparam>
        /// <param name="parameter1">The parameter1.</param>
        /// <param name="propertyExpression">The property expression.</param>
        /// <returns>
        ///     Reference Property Observer Builder.
        /// </returns>
        public IPropertyReferenceObserverBuilder <TResult> ReferenceObserverBuilder <TParameter1, TResult>(
            TParameter1 parameter1,
            Expression <Func <TParameter1, TResult> > propertyExpression)
            where TParameter1 : INotifyPropertyChanged
            where TResult : class
        {
            var builder = new PropertyReferenceObserverBuilder <TParameter1, TResult>(parameter1, propertyExpression)
            {
                ObserverFlag     = observerFlag,
                IsAutoActivate   = this.isAutoActivate,
                IsSilentActivate = this.isSilentActivate,
            };

            return(builder);
        }