public static PropertyObservable <TProperty> CreateFromPropertySelector <TSubject, TProperty>(TSubject subject, Expression <Func <TSubject, TProperty> > propertySelector)
            where TSubject : INotifyPropertyChanged
        {
            if (!(propertySelector.Body is MemberExpression current))
            {
                throw new ArgumentException();
            }

            var result = new PropertyObservable <TProperty>();

            result.SetRootNode(PropertyPathNode.CreateFromPropertySelector(propertySelector));
            result.SetSource(subject);
            return(result);
        }