public void SkipOtherComparisons()
        {
            var parameter = Expression.Parameter(typeof(A), "x");

            PreProcessors.PropagateImplicitBooleans(ExpOf <A>(x => x.BoolProperty == x.BoolField))
            .ShouldBeLike(Expression.Lambda <Func <A, bool> >(
                              Expression.MakeBinary(ExpressionType.Equal,
                                                    Expression.MakeMemberAccess(parameter, typeof(A).GetMember(nameof(A.BoolProperty))[0]),
                                                    Expression.MakeMemberAccess(parameter, typeof(A).GetMember(nameof(A.BoolField))[0])),
                              parameter));
        }
        public void SkipExplicitBoolComparisons()
        {
            var parameter = Expression.Parameter(typeof(A), "x");

            // ReSharper disable once RedundantBoolCompare
            PreProcessors.PropagateImplicitBooleans(ExpOf <A>(x => x.BoolProperty == true))
            .ShouldBeLike(Expression.Lambda <Func <A, bool> >(
                              Expression.MakeBinary(ExpressionType.Equal,
                                                    Expression.MakeMemberAccess(parameter, typeof(A).GetMember(nameof(A.BoolProperty))[0]),
                                                    Expression.Constant(true)),
                              parameter));
        }
        public void AndAlso()
        {
            var parameter = Expression.Parameter(typeof(A), "x");

            PreProcessors.PropagateImplicitBooleans(ExpOf <A>(x => x.BoolProperty && x.BoolField))
            .ShouldBeLike(Expression.Lambda <Func <A, bool> >(
                              Expression.MakeBinary(ExpressionType.AndAlso,
                                                    Expression.MakeBinary(ExpressionType.Equal,
                                                                          Expression.MakeMemberAccess(parameter, typeof(A).GetMember(nameof(A.BoolProperty))[0]),
                                                                          Expression.Constant(true)),
                                                    Expression.MakeBinary(ExpressionType.Equal,
                                                                          Expression.MakeMemberAccess(parameter, typeof(A).GetMember(nameof(A.BoolField))[0]),
                                                                          Expression.Constant(true))),
                              parameter));
        }