private void Assert(TreeNode actual, TreeNode expected)
        {
            PopulateNextRightPointer2.Populate(actual);
            var printer = new TreeNodePrinter(shouldPrintNextNodes: true);

            Console.WriteLine($"Expected:\r\n {printer.Print(expected)}");
            Console.WriteLine($"Actual:\r\n {printer.Print(actual)}");
            actual.Should().BeEquivalentTo(expected);
        }
        public static string Print([NotNull] Expression expression)
        {
            Check.NotNull(expression, nameof(expression));

            var visitor     = new ExpressionPrintingVisitor();
            var nodePrinter = new TreeNodePrinter();
            var node        = visitor.BuildTreeNode(expression);

            return(nodePrinter.Print(node));
        }