anchor.diff:   *      (orig + A) (orig)
    *      (orig)
    *
  - * No stack should ever be empty!
  + * No stack should ever be empty! Any of these failwiths should never be
  + * triggered externally. IOW, the API should protect this invariant.
    *)
   let fstar_options : ref<list<list<optionstate>>> = Util.mk_ref []
   
  
positive.code: let internal_pop () =
      let curstack = List.hd !fstar_options in
      match curstack with
      | [_] -> false
      | _::tl -> (fstar_options := tl :: List.tl !fstar_options; true)
  
  
negative.code: let set o =
      match !fstar_options with
      | [] -> failwith "set on empty option stack"
      | []::_ -> failwith "set on empty current option stack"
      | (_::tl)::os -> fstar_options := ((o::tl)::os)
  
  let snapshot () = Common.snapshot push fstar_options ()
  