public virtual void VisitSwitchCaseStatement <TExpression, TStatement>(
     ISwitchCaseStatement <TExpression, TStatement> switchCaseStatement)
     where TExpression : IExpression
     where TStatement : IStatement
 {
     Visit(switchCaseStatement);
 }
 public static void VisitSwitchCaseStatementChildren <TExpression, TStatement>(
     ISwitchCaseStatement <TExpression, TStatement> switchCaseStatement,
     IGenericStatementVisitor visitor)
     where TExpression : IExpression
     where TStatement : IStatement
 {
     VisitCollection(switchCaseStatement.Statements, visitor);
 }
        public override void VisitSwitchCaseStatement <TExpression, TStatement>(
            ISwitchCaseStatement <TExpression, TStatement> switchCaseStatement)
        {
            bool addIndentedNewLine = false;

            foreach (TExpression match in switchCaseStatement.Matches)
            {
                Steps.AddStepIfNecessary(addIndentedNewLine, new WriteIndentedNewLine());
                addIndentedNewLine = true;
                Steps.Add(new WriteCaseKeyword());
                Steps.Add(new WriteWhitespace());
                Steps.Add(new WriteExpression <TExpression>(match));
                Steps.Add(new WriteColon());
            }

            Steps.AddIndentedStatementSteps(switchCaseStatement.Statements);
        }