anchor.diff:        tokenize(Rest, NewLine, NewColumn, Scope, [Token|Tokens])
     end.
   
  -handle_unary_op([$:|Rest], Line, Column, _Kind, Op, Scope, Tokens) when ?is_space(hd(Rest)) ->
  -  tokenize(Rest, Line, Column + atom_length(Op) + 1, Scope, [{kw_identifier, {Line, Column, Column + atom_length(Op)}, Op}|Tokens]);
  -
  -handle_unary_op(Rest, Line, Column, Kind, Op, Scope, Tokens) ->
  +handle_unary_op([$:|Rest], Line, Column, _Kind, Length, Op, Scope, Tokens) when ?is_space(hd(Rest)) ->
  +  tokenize(Rest, Line, Column + Length + 1, Scope, [{kw_identifier, {Line, Column, Column + Length}, Op}|Tokens]);
  +
  +handle_unary_op(Rest, Line, Column, Kind, Length, Op, Scope, Tokens) ->
     case strip_horizontal_space(Rest) of
  -    {[$/|_] = Remaining, Length} -> tokenize(Remaining, Line, Column + atom_length(Op) + Length, Scope, [{identifier, {Line, Column, Column + atom_length(Op)}, Op}|Tokens]);
  -    {Remaining, Length} -> tokenize(Remaining, Line, Column + atom_length(Op) + Length, Scope, [{Kind, {Line, Column, Column + atom_length(Op)}, Op}|Tokens])
  -  end.
  -
  -handle_op([$:|Rest], Line, Column, _Kind, Op, Scope, Tokens) when ?is_space(hd(Rest)) ->
  -  tokenize(Rest, Line, Column + atom_length(Op) + 1, Scope, [{kw_identifier, {Line, Column, Column + atom_length(Op)}, Op}|Tokens]);
  -
  -handle_op(Rest, Line, Column, Kind, Op, Scope, Tokens) ->
  +    {[$/|_] = Remaining, Extra} ->
  +      tokenize(Remaining, Line, Column + Length + Extra, Scope,
  +               [{identifier, {Line, Column, Column + Length}, Op}|Tokens]);
  +    {Remaining, Extra} ->
  +      tokenize(Remaining, Line, Column + Length + Extra, Scope,
  +               [{Kind, {Line, Column, Column + Length}, Op}|Tokens])
  +  end.
  +
  +handle_op([$:|Rest], Line, Column, _Kind, Length, Op, Scope, Tokens) when ?is_space(hd(Rest)) ->
  +  tokenize(Rest, Line, Column + Length + 1, Scope,
  +           [{kw_identifier, {Line, Column, Column + Length}, Op}|Tokens]);
  +
  +handle_op(Rest, Line, Column, Kind, Length, Op, Scope, Tokens) ->
     case strip_horizontal_space(Rest) of
  -    {[$/|_] = Remaining, Length} -> tokenize(Remaining, Line, Column + atom_length(Op) + Length, Scope, [{identifier, {Line, Column, Column + atom_length(Op)}, Op}|Tokens]);
  -    {Remaining, Length} -> tokenize(Remaining, Line, Column + atom_length(Op) + Length, Scope, add_token_with_nl({Kind, {Line, Column, Column + atom_length(Op)}, Op}, Tokens))
  +    {[$/|_] = Remaining, Extra} ->
  +      tokenize(Remaining, Line, Column + Length + Extra, Scope,
  +               [{identifier, {Line, Column, Column + Length}, Op}|Tokens]);
  +    {Remaining, Extra} ->
  +      tokenize(Remaining, Line, Column + Length + Extra, Scope,
  +               add_token_with_nl({Kind, {Line, Column, Column + Length}, Op}, Tokens))
     end.
   
   % ## Three Token Operators
   handle_dot([$., T1, T2, T3|Rest], Line, Column, DotColumn, Scope, Tokens) when
       ?unary_op3(T1, T2, T3); ?comp_op3(T1, T2, T3); ?and_op3(T1, T2, T3); ?or_op3(T1, T2, T3);
       ?arrow_op3(T1, T2, T3); ?hat_op3(T1, T2, T3) ->
  -  handle_call_identifier(Rest, Line, Column + 1, DotColumn, list_to_atom([T1, T2, T3]), Scope, Tokens);
  +  handle_call_identifier(Rest, Line, Column + 1, DotColumn, 3, list_to_atom([T1, T2, T3]), Scope, Tokens);
   
   % ## Two Token Operators
   handle_dot([$., T1, T2|Rest], Line, Column, DotColumn, Scope, Tokens) when
       ?comp_op2(T1, T2); ?rel_op2(T1, T2); ?and_op(T1, T2); ?or_op(T1, T2);
       ?arrow_op(T1, T2); ?in_match_op(T1, T2); ?two_op(T1, T2); ?stab_op(T1, T2);
       ?type_op(T1, T2) ->
  -  handle_call_identifier(Rest, Line, Column + 1, DotColumn, list_to_atom([T1, T2]), Scope, Tokens);
  +  handle_call_identifier(Rest, Line, Column + 1, DotColumn, 2, list_to_atom([T1, T2]), Scope, Tokens);
   
   % ## Single Token Operators
   handle_dot([$., T|Rest], Line, Column, DotColumn, Scope, Tokens) when
       ?at_op(T); ?unary_op(T); ?capture_op(T); ?dual_op(T); ?mult_op(T);
       ?rel_op(T); ?match_op(T); ?pipe_op(T); T == $% ->
  -  handle_call_identifier(Rest, Line, Column + 1, DotColumn, list_to_atom([T]), Scope, Tokens);
  +  handle_call_identifier(Rest, Line, Column + 1, DotColumn, 1, list_to_atom([T]), Scope, Tokens);
   
   % ## Exception for .( as it needs to be treated specially in the parser
   handle_dot([$., $(|Rest], Line, Column, DotColumn, Scope, Tokens) ->
  
positive.code: % Stand-alone tokens
  
  tokenize("..." ++ Rest, Line, Column, Scope, Tokens) ->
    Token = check_call_identifier(identifier, Line, Column, '...', Rest),
    tokenize(Rest, Line, Column + 3, Scope, [Token|Tokens]);
  
  tokenize("=>" ++ Rest, Line, Column, Scope, Tokens) ->
  
negative.code:         _ when ?is_upcase(H) ->
            tokenize_alias(Rest, Line, Column, Atom, Length, HasEnding, Scope, Tokens);
          _ ->
            tokenize_other_identifier(Rest, Line, Column, Length, Atom, Scope, Tokens)
        end;
      {error, Reason} ->
        {error, Reason, Original, Tokens}
  