anchor.diff:          else
               GenPostponedDecisionTreeTargets cenv cgbuf rest stackAtTargets sequel contf
   
  -and GenDecisionTreesAndTargets cenv cgbuf targetInfos decisions stackAtTargets targets repeatSP sequel contf =
  -    match decisions with
  -    | [] -> 
  -        let sortedTargetInfos = 
  -            targetInfos 
  -            |> Seq.sortBy (fun (KeyValue(targetIdx, _)) -> targetIdx)
  -            |> List.ofSeq
  -
  -        GenPostponedDecisionTreeTargets cenv cgbuf sortedTargetInfos stackAtTargets sequel contf
  -            
  -    | (inplabOpt, eenv, tree) :: rest ->
  -        match tree with
  -        | 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 ->
  -                    GenDecisionTreesAndTargets cenv cgbuf targetInfos rest stackAtTargets targets repeatSP sequel contf
  -                )
  -            | _ ->
  -                GenDecisionTreesAndTargets cenv cgbuf targetInfos rest stackAtTargets targets repeatSP sequel contf
  -        | _ ->
  -            let newDecisions = GenDecisionTreeAndTargetsInner cenv cgbuf inplabOpt stackAtTargets eenv tree targets repeatSP targetInfos sequel
  -            GenDecisionTreesAndTargets cenv cgbuf targetInfos (newDecisions @ rest) stackAtTargets targets repeatSP sequel contf
  -
  -// Accumulate the decision graph as we go
  -and GenDecisionTreeAndTargets cenv cgbuf stackAtTargets eenv tree targets repeatSP sequel contf =
  -    GenDecisionTreesAndTargets cenv cgbuf (IntMap.empty()) [(None, eenv, tree)] stackAtTargets targets repeatSP sequel contf
  -
   and TryFindTargetInfo targetInfos n =
       match IntMap.tryFind n targetInfos with
       | Some (targetInfo, _) -> Some targetInfo
  
positive.code:     CG.SetStack cgbuf stackAtTargets
      (eenvAtTarget, spExpr, successExpr, (EndLocalScope(sequel, endScope)))
  
  and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defaultTargetOpt switchm targets repeatSP sequel =
      let g = cenv.g
      let m = e.Range
      match inplabOpt with None -> () | Some inplab -> CG.SetMarkToHere cgbuf inplab
  
negative.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)
          | _ ->
              contf targetInfos
  
      | TDSwitch(e, cases, dflt, m) ->
         GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases dflt m targets repeatSP targetInfos sequel contf
  
  and GetTarget (targets:_[]) n =
      if n >= targets.Length then failwith "GetTarget: target not found in decision tree"
  