anchor.diff:              {break,[Ks,newline(I, Vs)]}
       end.
   
  +%% last_length(Chars) -> Length.
  +%% last_length(Chars, CurrentLine) -> Length.
  +%%  Return the length of the last line in the text.
  +
   last_length(S) -> last_length(S, 0).
   
   last_length([H|T], L0) when is_list(H) ->
  
positive.code: term(Bit, D, _, _) when is_bitstring(Bit) ->
      bitstring(Bit, D);                          %First D bytes
  term(Map, D, I, L) when ?IS_MAP(Map) ->
      map(Map, D, I, L);
  term(Other, _, _, _) ->
      lfe_io_write:term(Other).                   %Use standard LFE for rest
  
  
negative.code: indent_type('match-spec') -> 0;
  indent_type(_) -> none.
  
  %% map(KVs, Depth, Indentation, LineLength).
  %% map_body(KVs, CurrentLineIndent, Depth, Indentation, LineLength)
  
  map_body(KVs, D, I, L) ->
      map_body(KVs, I, D, I, L-1).
  
  map_body([K,V|KVs], CurL, D, I, L) ->
      case map_assoc(K, V, CurL, D, I, L) of
          {both_fit,KVcs,KVl} ->			%Both fit on this line
              [KVcs,map_rest(KVs, CurL+KVl, D-1, I, L)];
          {both_line,KVcs,KVl} ->			%Both fit on single line
              [KVcs,map_rest(KVs, I+KVl, D-1, I, L)];
          {break,KVcs} ->		                %On separate lines
              %% Force a break after K/V split.
              [KVcs,map_rest(KVs, L, D-1, I, L)]
      end;
  map_body(E, CurL, D, I, L) ->
      map_last(E, CurL, D, I, L).
  
  %% map_rest(KVs, Depth, Indentation, LineLength)
  %% map_rest(KVs, CurrentLineIndent, Depth, Indentation, LineLength)
  
  map_rest(KVs, D, I, L) ->
      map_rest(KVs, I, D, I, L-1).
  
  map_rest([], _, _, _, _) -> "";
  map_rest(_, _, 0, _, _) -> " ...";
  map_rest([K,V|KVs], CurL, D, I, L) ->
      case map_assoc(K, V, CurL+1, D, I, L) of
          {both_fit,KVcs,KVl} ->			%Both fit on this line
              [$\s,KVcs,map_rest(KVs, CurL+KVl+1, D-1, I, L)];
          {both_line,KVcs,KVl} ->		        %Both fit on single line
              [newline(I, KVcs),map_rest(KVs, I+KVl, D-1, I, L)];
          {break,KVcs} ->				%On separate lines
              %% Force a break after K/V split.
              [newline(I, KVcs),map_rest(KVs, L, D-1, I, L)]
      end;
  map_rest(E, CurL, D, I, L) ->
      map_last(E, CurL, D, I, L).
  
  map_last(Tail, CurL, D, I, L) ->
      list_tail(Tail, CurL, D, I, L).
  
  map_assoc(K, V, CurL, D, I, L) ->
      Kcs = term(K, D, 0, 99999),                 %Never break the line
  