public static ObservedNode AsObservedNode <TViewModel, TPoperty>(this Expression <Func <TViewModel, TPoperty> > self)
        {
            ObservedNodeBuilder builder = new ObservedNodeBuilder();

            builder.Visit(self);
            return(builder.Root);
        }
        public void ExpressionShouldBeAsExpected <T, TProperty>(Expression <Func <T, TProperty> > expression, string expected)
        {
            ObservedNodeBuilder visitor = new ObservedNodeBuilder();

            visitor.Visit(expression);

            var actual = visitor.ToString();

            actual.Should().Be(expected);
        }