anchor.diff:      CG.SetStack cgbuf stackAtTargets
       (eenvAtTarget, spExpr, successExpr, (EndLocalScope(sequel, endScope)))
   
  -and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defaultTargetOpt switchm targets repeatSP sequel =
  +and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defaultTargetOpt switchm targets repeatSP targetInfos sequel contf =
       let g = cenv.g
       let m = e.Range
       match inplabOpt with None -> () | Some inplab -> CG.SetMarkToHere cgbuf inplab
  
positive.code:       // optimize a test against a boolean value, i.e. the all-important if-then-else
        | TCase(DecisionTreeTest.Const(Const.Bool b), successTree) :: _ ->
         let failureTree = (match defaultTargetOpt with None -> cases.Tail.Head.CaseTree | Some d -> d)
         GenDecisionTreeTest cenv eenv.cloc cgbuf e None eenv (if b then successTree else failureTree) (if b then failureTree else successTree) targets sequel
  
        // // Remove a single test for a union case . Union case tests are always exa
        //| [ TCase(DecisionTreeTest.UnionCase _, successTree) ] when (defaultTargetOpt.IsNone) ->
  
negative.code:                   BI_brtrue
                | _ -> failwith "internal error: GenDecisionTreeSwitch"
              CG.EmitInstr cgbuf (pop 1) Push0 (I_brcmp (bi, (List.head caseLabels).CodeLabel))
              GenDecisionTreeCases cenv cgbuf stackAtTargets eenv defaultTargetOpt targets repeatSP targetInfos sequel caseLabels cases contf
            
          | DecisionTreeTest.ActivePatternCase _ -> error(InternalError("internal error in codegen: DecisionTreeTest.ActivePatternCase", switchm))
          | DecisionTreeTest.UnionCase (hdc, tyargs) ->
  