anchor.diff:  -include_lib("eunit/include/eunit.hrl").
   -endif.
   
  +-type option() :: {'depth', integer()}
  +		| {'lists_as_strings', boolean()}
  +		| {'force_strings', boolean()}.
  +-type options() :: [option()].
  +
   -record(print_options, {
           %% negative depth means no depth limiting
           depth = -1 :: integer(),
  
positive.code:     print(Term, Max, []).
  
  %% @doc Returns {List, Length}
  -spec print(term(), pos_integer(), #print_options{}) -> {iolist(), pos_integer()}.
  print(Term, Max, Options) when is_list(Options) ->
      %% need to convert the proplist to a record
      print(Term, Max, prepare_options(Options, #print_options{}));
  
negative.code: 
  %% @doc Returns an flattened list containing the ASCII representation of the given
  %% term.
  -spec fprint(term(), pos_integer(), options()) -> string().
  fprint(T, Max, Options) -> 
      {L, _} = print(T, Max, prepare_options(Options, #print_options{})),
      lists:flatten(L).
  