anchor.diff:                  | _ -> []
   
               [ Try.Create(body = body, handlers = handlers, ?finalBody = finalBody) ]
  -        | Babel.SwitchStatement(ss) ->
  -            let value, stmts = com.TransformAsExpr(ctx, ss.Discriminant)
  +        | Babel.SwitchStatement { Discriminant=discriminant; Cases=cases } ->
  +            let value, stmts = com.TransformAsExpr(ctx, discriminant)
   
               let rec ifThenElse (fallThrough: Expression option) (cases: Babel.SwitchCase list): Statement list option =
                   match cases with
  
positive.code:                 | _ -> []
  
              [ yield! stmts; If.Create(test = test, body = body, orelse = orElse) ]
          | Babel.WhileStatement(ws) ->
              let expr, stmts = com.TransformAsExpr(ctx, ws.Test)
  
              let body =
                  com.TransformAsStatements(ctx, returnStrategy, ws.Body)
                  |> transformBody ReturnStrategy.NoReturn
  
              [ yield! stmts; While.Create(test = expr, body = body, orelse = []) ]
  
negative.code:         (com: IPythonCompiler)
          (ctx: Context)
          (returnStrategy: ReturnStrategy)
          (block: Babel.BlockStatement)
          : list<Statement> =
  
          [ for stmt in block.Body do
              yield! transformStatementAsStatements com ctx returnStrategy stmt ]
  
      /// Transform Babel program to Python module.
      let transformProgram (com: IPythonCompiler) ctx (body: Babel.ModuleDeclaration array): Module =
  