anchor.diff:                  Some(GenDecisionTreeTarget cenv cgbuf stackAtTargets targetInfo sequel)
               else
                   // Here we are postponing the generation of the target.
  -                // If not binding anything we can go directly to the targetMarkAfterBinds point.
  -                if isNil vs then
  -                    match inplabOpt with
  -                    | None -> CG.EmitInstr cgbuf (pop 0) Push0 (I_br targetMarkAfterBinds.CodeLabel)
  -                    | Some inplab -> CG.SetMark cgbuf inplab targetMarkAfterBinds
  -                else
  -                    cgbuf.SetMarkToHereIfNecessary inplabOpt
  -                    CG.EmitInstr cgbuf (pop 0) Push0 (I_br targetMarkBeforeBinds.CodeLabel)
  +                cgbuf.SetMarkOrEmitBranchIfNecessary (inplabOpt, targetMarkBeforeBinds)
                   None
   
           let isTargetPostponed = not generateTargetNow
  
positive.code:         
          let genTargetInfoOpt =
              if generateTargetNow then
                  // Here we are generating the target immediately
                  cgbuf.SetMarkToHereIfNecessary inplabOpt
                  Some(GenDecisionTreeTarget cenv cgbuf stackAtTargets targetInfo sequel)
              else
                  None
  
negative.code:         | None -> ()
          | Some inplab -> cgbuf.SetMarkToHere inplab
  
      member cgbuf.SetMarkOrEmitBranchIfNecessary (inplabOpt: Mark option, target: Mark) =
          match inplabOpt with
          | None -> cgbuf.EmitInstr (pop 0, Push0, I_br target.CodeLabel)
          | Some inplab -> cgbuf.SetMark(inplab, target)
  