anchor.diff:      [${, pp_tag_tuple(L, Col, Ll, M, TInd, Ind, LD, W + 1), $}];
   pp({{tuple,false,L}, _Len}, Col, Ll, M, TInd, Ind, LD, W) ->
       [${, pp_list(L, Col + 1, Ll, M, TInd, indent(1, Ind), LD, $,, W + 1), $}];
  +pp({{map,Pairs},_Len}, Col, Ll, M, TInd, Ind, LD, W) ->
  +    [$#,${, pp_list(Pairs, Col + 2, Ll, M, TInd, indent(2, Ind), LD, $,, W + 1), $}];
  +pp({{map_pair,K,V},_Len}, Col, Ll, M, TInd, Ind, LD, W) ->
  +    [pp(K, Col, Ll, M, TInd, Ind, LD, W), " => ", pp(V, Col, Ll, M, TInd, Ind, LD, W)];
   pp({{record,[{Name,NLen} | L]}, _Len}, Col, Ll, M, TInd, Ind, LD, W) ->
       [Name, ${, pp_record(L, NLen, Col, Ll, M, TInd, Ind, LD, W + NLen+1), $}];
   pp({{bin,S}, _Len}, Col, Ll, M, _TInd, Ind, LD, W) ->
  
positive.code:     [${, write_list(L, $,), $}];
  write({{list, L}, _}) ->
      [$[, write_list(L, $|), $]];
  write({{record, [{Name,_} | L]}, _}) ->
      [Name, ${, write_fields(L), $}];
  write({{bin, S}, _}) ->
  
negative.code:     S = io_lib:write(Term),
      {S, lists:flatlength(S)}.
  
  print_length_map(_Map, 1, _RF, _Enc, _Str) ->
      {"#{...}", 6};
  print_length_map(Map, D, RF, Enc, Str) when is_map(Map) ->
      Pairs = print_length_map_pairs(maps:to_list(Map), D, RF, Enc, Str),
      {{map, Pairs}, list_length(Pairs, 3)}.
  
  print_length_map_pairs([], _D, _RF, _Enc, _Str) ->
      [];
  print_length_map_pairs(_Pairs, 1, _RF, _Enc, _Str) ->
      {dots, 3};
  print_length_map_pairs([{K,V}|Pairs], D, RF, Enc, Str) ->
      [print_length_map_pair(K,V,D-1,RF,Enc,Str) |
       print_length_map_pairs(Pairs,D-1,RF,Enc,Str)].
  
  print_length_map_pair(K, V, D, RF, Enc, Str) ->
      {KS, KL} = print_length(K, D, RF, Enc, Str),
      {VS, VL} = print_length(V, D, RF, Enc, Str),
      {{map_pair, {KS,KL}, {VS,VL}}, KL + VL}.
  
  print_length_tuple(_Tuple, 1, _RF, _Enc, _Str) ->
      {"{...}", 5};
  print_length_tuple(Tuple, D, RF, Enc, Str) ->
  