protected override Expression VisitCase(CaseExpression caseExpression)
        {
            caseExpression.ThrowIfNull(nameof(caseExpression));

            Sql.Append("ICASE(");

            if (caseExpression.Operand != null)
            {
                Sql.Append(" ");
                Visit(caseExpression.Operand);
            }

            var first = true;

            foreach (var whenClause in caseExpression.WhenClauses)
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    Sql.Append(",");
                }

                Visit(whenClause.Test);
                Sql.Append(",");
                Visit(whenClause.Result);
            }

            if (caseExpression.ElseResult != null)
            {
                Sql.Append(",");
                Visit(caseExpression.ElseResult);
            }

            Sql.Append(")");

            return(caseExpression);
        }