anchor.diff:  
   % Sigils
   
  -tokenize(Line, [$%,S,H,H,H|T], Tokens) when H == $", ?is_upcase(S) orelse ?is_downcase(S) ->
  +tokenize(Line, [$%,S,H,H,H|T], Tokens) when ?is_quote(H), ?is_upcase(S) orelse ?is_downcase(S) ->
     case extract_heredoc_with_interpolation(Line, ?is_downcase(S), T, H) of
       { error, _ } = Error ->
         Error;
  
positive.code: tokenize(Line, [$.,$(|Rest], Tokens) ->
    tokenize(Line, [$(|Rest], [{dot_call_op,Line,'.'}|Tokens]);
  
  tokenize(Line, [$.,H|T], Tokens) when H == $"; H == $' ->
    case elixir_interpolation:extract(Line, true, T, H) of
      { NewLine, [Part], Rest } when is_binary(Part) ->
        Atom = binary_to_atom(Part, utf8),
  
negative.code: % Atom operators
  
  % ## Containers
  tokenize(Line, ":<<>>" ++ Rest, Tokens) ->
    tokenize(Line, Rest, [{atom,Line,['<<>>']}|Tokens]);
  
  tokenize(Line, [$:,T1,T2|Rest], Tokens) when ?container2(T1, T2) ->
    tokenize(Line, Rest, [{atom,Line,[list_to_atom([T1,T2])]}|Tokens]);
  
  % ## Three Token Operators
  tokenize(Line, [$:,T1,T2,T3|Rest], Tokens) when ?comp3(T1, T2, T3) ->
    tokenize(Line, Rest, [{atom,Line,[list_to_atom([T1,T2,T3])]}|Tokens]);
  
  % ## Two Token Operators
  tokenize(Line, [$:,T1,T2|Rest], Tokens) when ?comp2(T1, T2); ?op2(T1, T2) ->
    tokenize(Line, Rest, [{atom,Line,[list_to_atom([T1,T2])]}|Tokens]);
  
  % ## Single Token Operators
  tokenize(Line, [$:,T|Rest], Tokens) when ?comp1(T); ?op1(T); T == $&; T == $. ->
    tokenize(Line, Rest, [{atom,Line,[list_to_atom([T])]}|Tokens]);
  
  % Ambiguous unary/binary operators tokens
  