anchor.diff:  unescape_map(E)  -> E.
   
   %% Strings
  -
   handle_string(T, Line, Column, Term, Scope, Tokens) ->
     case scan_string(Line, Column, T, Term) of
       {ok, NewLine, NewColumn, Bin, Rest} ->
         case unescape_token(Bin) of
           {ok, Unescaped} ->
  -          Token = {string_type(Term), build_meta(Line, Column-1), Unescaped},
  +          Token = {string_type(Term), build_meta(Line, Column-length(Term)), Unescaped},
             scan(Rest, NewLine, NewColumn, Scope, [Token|Tokens]);
           {error, ErrorDescription} ->
  -          {error, {{Line, Column}, ?MODULE, ErrorDescription}, [Term|T], lists:reverse(Tokens)}
  +          {error, {{Line, Column}, ?MODULE, ErrorDescription}, Term ++ T, lists:reverse(Tokens)}
         end;
       {error, Location, _} ->
         {error, {Location, ?MODULE, {missing_terminator, Term, Term, Line}}, T, lists:reverse(Tokens)}
  
positive.code: check_terminator(_, Terminators) ->
    Terminators.
  
  string_type($") -> binary_string;
  string_type($') -> list_string.
  
  
negative.code: scan_string(Line, _Column, [$\n|Rest], Term, Acc) ->
    scan_string(Line+1, 1, Rest, Term, [$\n|Acc]);
  scan_string(Line, _Column, [$\r, $\n|Rest], Term, Acc) ->
    scan_string(Line+1, 1, Rest, Term, [$\n|Acc]);
  scan_string(Line, Column, [$\\, C|Rest], [C] = Term, Acc) ->
    scan_string(Line, Column+2, Rest, Term, [C|Acc]);
  scan_string(Line, Column, [$\\, Char|Rest], Term, Acc) ->
    scan_string(Line, Column+2, Rest, Term, [Char, $\\|Acc]);
  %% Catch all clause
  