anchor.diff:  -type tokens() :: [token()].
   -type error_description() :: term().
   -type error_info() :: {location(), module(), error_description()}.
  +
  +%%% Local record.
  +-record(erl_scan,
  +        {resword_fun = fun reserved_word/1 :: resword_fun(),
  +         ws          = false               :: boolean(),
  +         comment     = false               :: boolean(),
  +         text        = false               :: boolean()}).
  +
  +%%----------------------------------------------------------------------------
   
   -spec format_error(Error :: term()) -> string().
   format_error({string,Quote,Head}) ->
  
positive.code:          token_info/1,token_info/2,
           attributes_info/1,attributes_info/2,set_attribute/3]).
  
  %%% Local record.
  -record(erl_scan,
          {resword_fun=fun reserved_word/1,
           ws=false,
           comment=false,
           text=false}).
  
  %%%
  %%% Exported functions
  %%%
  
  -define(COLUMN(C), is_integer(C), C >= 1).
  %% Line numbers less than zero have always been allowed:
  -define(ALINE(L), is_integer(L)).
  -define(STRING(S), is_list(S)).
  
negative.code:     [O|Os].
  
  attr_info(Attrs, Item) ->
      try lists:keyfind(Item, 1, Attrs) of
          {_Item, _Value} = T ->
              T;
          false ->
              undefined
      catch
  	_:_ ->
              erlang:error(badarg, [Attrs, Item])
      end.
  
  