anchor.diff:        ETuple (List.map (translate_expr env) es)
   
     | MLE_CTor ((_, cons), es) ->
  -      ECons (assert_lid e.mlty, cons, List.map (translate_expr env) es)
  +      ECons (assert_lid env e.mlty, cons, List.map (translate_expr env) es)
   
     | MLE_Fun _ ->
         failwith "todo: translate_expr [MLE_Fun]"
  
positive.code:   | MLE_Coerce _ ->
        failwith "todo: translate_expr [MLE_Coerce]"
  
  and assert_lid t =
    match t with
    | MLTY_Named ([], lid) -> lid
    | _ -> failwith "invalid argument: assert_lid"
  
  and translate_branches env branches =
  
negative.code:   | DGlobal of list<flag> * lident * typ * expr
    | DFunction of option<cc> * list<flag> * typ * lident * list<binder> * expr
    | DTypeAlias of lident * int * typ
    | DTypeFlat of lident * int * fields_t
    | DExternal of option<cc> * lident * typ
    | DTypeVariant of lident * int * branches_t
  
  and cc =
    | StdCall
  