anchor.diff:          A.mk_term a c.pos A.Un
     in
     match (c.n) with 
  -  | Total (typ, _) ->
  +  | Total (typ, u) ->
       let t = resugar_term typ in
  -    mk (A.Construct(C.effect_Tot_lid, [(t, A.Nothing)]))
  -
  -  | GTotal (typ, _) ->
  +    begin match u with 
  +    | None ->
  +      mk (A.Construct(C.effect_Tot_lid, [(t, A.Nothing)]))
  +    | Some u ->
  +      // where should we put the resugared universe? Add to the
  +      // list for now.
  +      let u = resugar_universe u c.pos in 
  +      mk (A.Construct(C.effect_Tot_lid, [(t, A.Nothing);(u, A.Nothing)]))
  +    end
  +
  +  | GTotal (typ, u) ->
       let t = resugar_term typ in
  -    mk (A.Construct(C.effect_GTot_lid, [(t, A.Nothing)]))
  +    begin match u with
  +    | None ->
  +      mk (A.Construct(C.effect_GTot_lid, [(t, A.Nothing)]))
  +    | Some u ->
  +      // where should we put the resugared universe? Add to the
  +      // list for now.
  +      let u = resugar_universe u c.pos in 
  +      mk (A.Construct(C.effect_GTot_lid, [(t, A.Nothing);(u, A.Nothing)]))
  +    end
   
     | Comp c ->
       let universe = List.map (fun u -> resugar_universe u) c.comp_univs in
  
positive.code:             | Tm_fvar fv when (U.field_projector_contains_constructor fv.fv_name.v.str) ->
                let f = lid_of_path [fv.fv_name.v.str] t.pos in
                mk (A.Project(resugar_term t, f))
              | Tm_fvar fv when (BU.starts_with fv.fv_name.v.str I.reserved_prefix) ->
                mk (A.Discrim(lid_of_path [fv.fv_name.v.str] t.pos))
              | _ -> resugar_term t
            end
  
  
negative.code:       let (n, u) = universe_to_int 0 u in
        begin match u with
        | U_zero -> 
          mk (A.Const(Const_int(string_of_int n, None))) r 
        
        | _ -> 
          let e1 = mk (A.Const(Const_int(string_of_int n, None))) r in
          let e2 = resugar_universe u r in
          mk (A.Op("+", [e1; e2])) r 
        end
  
      | U_max l ->
        begin match l with 
        | [] -> failwith "Impossible: U_max without arguments"
        | _ -> 
          let t = mk (A.Var(lid_of_path ["max"] r)) r in
          List.fold_left(fun acc x -> mk (A.App(acc, resugar_universe x r, A.Nothing)) r) t l
        end
  
      | U_name u -> mk (A.Uvar(u)) r
      | U_unif _ -> mk A.Wild r
  