anchor.diff:    | 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 * fields_t
  +  | DTypeFlat of lident * int * fields_t
     | DExternal of option<cc> * lident * typ
  -  | DTypeVariant of (lident * branches_t)
  +  | DTypeVariant of lident * int * branches_t
   
   and cc =
     | StdCall
  
positive.code:       ETuple (List.map (translate_expr env) es)
  
    | MLE_CTor ((_, cons), es) ->
        ECons (assert_lid e.mlty, cons, List.map (translate_expr env) es)
  
    | MLE_Fun _ ->
        failwith "todo: translate_expr [MLE_Fun]"
  
negative.code: (** Versioned binary writing/reading of ASTs *)
  
  type version = int
  let current_version: version = 18
  
  type file = string * program
  type binary_format = version * list<file>
  