public void Run()
        {
            var addition1 = new Addition(
                new Literal(5.0), new Literal(6.0));

            var sb = new StringBuilder();
            var expressionPrinter = new InfixExpressionPrinter(sb);

            addition1.Accept(expressionPrinter);
            Console.WriteLine(sb);

            var complexAddition = new Addition(
                new Addition(
                    new Subtraction(
                        new Literal(5.0), new Literal(6.0)),
                    new Literal(20.0)),
                new Addition(
                    new Literal(1.0), new Literal(3.0)));

            sb.Clear();
            complexAddition.Accept(expressionPrinter);
            Console.WriteLine(sb);

            sb.Clear();
            var postfixExpressionPrinter = new PostfixExpressionPrinter(sb);

            complexAddition.Accept(postfixExpressionPrinter);
            Console.WriteLine(sb);

            sb.Clear();
            var prefixExpressionPrinter = new PrefixExpressionPrinter(sb);

            complexAddition.Accept(prefixExpressionPrinter);
            Console.WriteLine(sb);
        }