anchor.diff:          env, Some (reduce1 [text "type"; text t.ident.idText; text "="; dty])
   
       | Sig_val_decl (x, ty, None, None, rg) ->        
  -        let ty  = mlty_of_ty rg ty in
  +        let rec strip ty =
  +            let ty = Absyn.Util.compress_typ ty in
  +            match ty.t with
  +            | Typ_univ (x, Kind_type, (Computation ty | Pure ty)) ->
  +                strip ty
  +            | Typ_meta (Meta_pos (ty, _)) ->
  +                strip ty
  +            | _ ->
  +                ty
  +        in
  +        let ty  = mlty_of_ty rg (strip ty) in
           let dty = doc_of_mltype [] (min_op_prec, NonAssoc) ty in
           env, Some (reduce1 [text "val"; text x.ident.idText; text " : "; dty])
   
  
positive.code:         let fold1 sigelt (types, ctors) =
              match sigelt with
              | Sig_tycon (x, tps, k, ts, cs, _, rg) -> begin
                  match is_kind_for_mldtype rg k with
                  | Some n ->
                      ((x.ident.idText, tps, cs, n, rg) :: types, ctors)
                  | _ ->
                      unsupported rg
              end
  
negative.code:                     aux [] ar ty
          in
  
          let mldcons_of_cons cname =
              let (c, _) = Map.find cname.ident.idText cs in
              let ctynames, c = strip ar c in
  