anchor.diff:              | { n = Exp_fvar (c, false) } ->
                   let subns = String.concat "." (List.map (fun x -> x.idText) c.v.ns) in
                   let rn, subnsl = match List.rev c.v.ns with [] -> "", [] | h::t -> h.idText, List.rev t in
  -                (match Util.starts_with rn "Mk", args with
  -                | true, [arg] ->
  +                (match smap_try_find record_constructors subns, args with
  +                | Some _, [arg] ->
                       MLE_Proj (arg, (path_of_ns mlenv subnsl, c.v.ident.idText))
  -                | true, arg::args ->
  +                | Some _, arg::args ->
                       MLE_App (MLE_Proj (arg, (path_of_ns mlenv subnsl, c.v.ident.idText)), args)
                   | _ -> MLE_App (mlexpr_of_expr mlenv rg lenv sube, args))
               | _ -> MLE_App (mlexpr_of_expr mlenv rg lenv sube, args)
  
positive.code:     let sig_ = mlsig_of_sig (mk_mlenv name) fmod_.declarations in
      (name, sig_, mod_)
  
  (* -------------------------------------------------------------------- *)
  let mllib_empty : mllib =
      MLLib []
  
negative.code: let as_tprims (id : lident) : option<tprims> =
      if is_prim_ns id.ns then
          match id.ident.idText with
          | "Tuple2" | "DTuple2" -> Some (Tuple 2)
          | "Tuple3" | "DTuple3" -> Some (Tuple 3)
          | "Tuple4" | "DTuple4" -> Some (Tuple 4)
          | "Tuple5" | "DTuple5" -> Some (Tuple 5)
          | "Tuple6" | "DTuple6" -> Some (Tuple 6)
          | "Tuple7" | "DTuple7" -> Some (Tuple 7)
          | "exn"    -> Some Exn
          | _        -> None
      else
  