anchor.diff:          let cuspec = GenUnionSpec cenv.amap m eenv.tyenv c.TyconRef tyargs
           let idx = c.Index
           let avoidHelpers = entityRefInThisAssembly g.compilingFslib c.TyconRef
  -        GenDecisionTreeTest cenv eenv.cloc cgbuf stackAtTargets e (Some (pop 1, Push [g.ilg.typ_Bool], Choice1Of2 (avoidHelpers, cuspec, idx))) eenv successTree failureTree targets repeatSP targetInfos sequel contf
  +        let tester = (Some (pop 1, Push [g.ilg.typ_Bool], Choice1Of2 (avoidHelpers, cuspec, idx)))
  +        GenDecisionTreeTest cenv eenv.cloc cgbuf stackAtTargets e tester eenv successTree failureTree targets targetCounts repeatSP targetInfos sequel contf
   
         | _ ->
           let caseLabels = List.map (fun _ -> CG.GenerateDelayMark cgbuf "switch_case") cases
  
positive.code:        // we effectively lose an EndLocalScope for all dtrees that go to the same target
         // So we just pretend that the variable goes out of scope here.
         CG.SetMarkToHere cgbuf endScope
         GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv rest targets repeatSP targetInfos sequel contf
  
      | TDSuccess(es, targetIdx) ->
          let targetInfos, genTargetInfoOpt = GenDecisionTreeSuccess cenv cgbuf inplabOpt stackAtTargets eenv es targetIdx targets repeatSP targetInfos sequel
          match genTargetInfoOpt with
          | Some (eenvAtTarget, spExprAtTarget, exprAtTarget, sequelAtTarget) ->
              GenLinearExpr cenv cgbuf eenvAtTarget spExprAtTarget exprAtTarget sequelAtTarget true (fun Fake -> contf targetInfos)
  
negative.code: // Used for the peephole optimization below
  and (|BoolExpr|_|) = function Expr.Const (Const.Bool b1, _, _) -> Some b1 | _ -> None
  
  and GenDecisionTreeTest cenv cloc cgbuf stackAtTargets e tester eenv successTree failureTree targets targetCounts repeatSP targetInfos sequel contf =
      let g = cenv.g
      match successTree, failureTree with
  
  