anchor.diff:  
   -module(es_print).
   
  --export([write/1, display/1]).
  +-export([ display/1
  +        , write/1
  +        ]).
  +
  +-type datum() :: term().
  +
  +%% API -------------------------------------------------------------------------
  +
  +-spec display(datum()) -> ok.
  +display(Term) ->
  +  print(Term, _Depth = 10, _Width = 20, _IsDisplay = true).
  +
  +-spec write(datum()) -> ok.
  +write(Term) ->
  +  Infinity = infinity(),
  +  print(Term, _Depth = Infinity, _Width = Infinity, _IsDisplay = false).
  +
  +%% Internals -------------------------------------------------------------------
   
   %% For Depth and Width limited output we need Limit values that act
   %% like finite non-negative integers with "decrement" and "is-zero"
  
positive.code:     false ->
        Pname = atom_to_list(Symbol),
        case pname_needs_escape(Pname) of
  	false ->
  	  io:format("~p", [Symbol]);
  	true ->
  	  escape_pname(Pname)
        end
    end.
  
  
negative.code: %% positive infinity for unlimited output.  We use "-1" as +infinity.
  
  -define(infinity, -1).
  
  infinity() -> ?infinity.
  
  decrement(?infinity) -> ?infinity;
  decrement(N) when N > 0 -> N - 1.
  
  print(_, 0, _, _) ->
    io:format("...");
  