anchor.diff:  garbage_collect_all_and_check(0, _MemInfo, _NewItems, _AddedSize) -> ok;
   garbage_collect_all_and_check(Retries, MemInfo, NewItems, AddedSize) when Retries > 0 ->
       garbage_collect_all_and_check_(1, Retries + 1, MemInfo, NewItems, AddedSize).
  -    
  +
   garbage_collect_all_and_check_(Max, Max, _MemInfo, _NewItems, _AddedSize) -> ok;
   garbage_collect_all_and_check_(N, Max, MemInfo, NewItems, AddedSize) when N < Max ->
       garbage_collect_all(),
  
positive.code: check_memory_inc_bool(PrevMemInfo, NewMemInfo, NewItems, AddedSize) ->
      % assume an entry for an item uses 4 * 1k memory for ets (excluding the binary size)
      EntryEtsSize = 4 * 1000,
      
      % NOTE: use stronger bounds than check_memory_inc/4 as other processes may increase the memory use again
      % we do not create additional atoms!
      NewMemInfo#mem_info.atom_used =:= PrevMemInfo#mem_info.atom_used andalso
  
negative.code:     print_table_info(Table, "").
  
  %% @doc Prints information about the given ets table ID and compares it with
  %%      the total Erlang VM memory stats (prefixes the message with Status).
  print_table_info(Table, Status) ->
      Memory = ets:info(Table, memory),
      ContentSize = lists:sum([byte_size(element(2,X)) || X <- ets:tab2list(Table), is_binary(element(2, X))]),
  