private int GetPrecedence(BinaryExpression.OperationType operation)
        {
            switch (operation)
            {
            case BinaryExpression.OperationType.Multiply:
            case BinaryExpression.OperationType.Divide: return(1);

            case BinaryExpression.OperationType.Plus:
            case BinaryExpression.OperationType.Minus: return(2);

            case BinaryExpression.OperationType.Eq: return(3);

            default: throw new ArgumentException($"Unknown operation: {operation}");
            }
        }
        private static string PrintOperation(BinaryExpression.OperationType operation)
        {
            switch (operation)
            {
            case BinaryExpression.OperationType.Plus: return("+");

            case BinaryExpression.OperationType.Minus: return("-");

            case BinaryExpression.OperationType.Multiply: return("*");

            case BinaryExpression.OperationType.Divide: return("/");

            case BinaryExpression.OperationType.Eq: return("==");

            default: throw new ArgumentException($"Unknown operation: {operation}");
            }
        }