anchor.diff:  map_pair_types(Fs) ->
       tuple_type(Fs, fun map_pair_type/2).
   
  -map_pair_type({type,_Line,map_field_assoc,[KType,VType]}, Prec) ->
  +map_pair_type({type,_Anno,map_field_assoc,[KType,VType]}, Prec) ->
       {list,[{cstep,[ltype(KType, Prec),leaf(" =>")],ltype(VType, Prec)}]};
  -map_pair_type({type,_Line,map_field_exact,[KType,VType]}, Prec) ->
  +map_pair_type({type,_Anno,map_field_exact,[KType,VType]}, Prec) ->
       {list,[{cstep,[ltype(KType, Prec),leaf(" :=")],ltype(VType, Prec)}]}.
   
   record_type(Name, Fields) ->
  
positive.code:          end || Fa <- Falist],
      [{seq,$[,$],$,,L}].
  
  lfunction({function,_Line,Name,_Arity,Cs}, Opts) ->
      Cll = nl_clauses(fun (C, H) -> func_clause(Name, C, H) end, $;, Opts, Cs),
      [Cll,leaf(".\n")].
  
  func_clause(Name, {clause,Line,Head,Guard,Body}, Opts) ->
      Hl = call({atom,Line,Name}, Head, 0, Opts),
      Gl = guard_when(Hl, Guard, Opts),
      Bl = body(Body, Opts),
      {step,Gl,Bl}.
  
negative.code:            {reserved,'end'}]};
  lexpr({'fun',_,{function,F,A}}, _Prec, _Opts) ->
      [leaf("fun "),{atom,F},leaf(format("/~w", [A]))];
  lexpr({'fun',A,{function,_,_}=Func,Extra}, Prec, Opts) ->
      {force_nl,fun_info(Extra),lexpr({'fun',A,Func}, Prec, Opts)};
  lexpr({'fun',_,{function,M,F,A}}, _Prec, Opts) ->
      NameItem = lexpr(M, Opts),
      CallItem = lexpr(F, Opts),
  