anchor.diff:  
   %% @doc Push a term to the queue. This function has a constant-time complexity.
   push(Mem, Term) ->
  -  Bin = term_to_binary(Term),
  +  push(Mem, Term, 0).
  +
  +%% @doc Push a term to the queue. This function has a constant-time complexity.
  +%% `Compression' is the compression level from `0' to `9', where `0' is no compression.
  +push(Mem, Term, Compression) when is_integer(Compression), Compression >= 0, Compression < 10 ->
  +  Bin = term_to_binary(Term, [{compressed, 0}, {minor_version, 2}]),
     Sz0 = byte_size(Bin)+8,
     Pad = Sz0 rem 8,
     Sz  = Sz0 + Pad,
  
positive.code: %%%          module provides a gen_server API, which wraps the queue for use
  %%%          in multi-process applications.
  %%%          The queue is stored in a memory-mapped file, and it automatically
  %%%          grows if the messages are not dequeued from the queue.
  %%%          See test cases at the end of this module for sample use cases.
  %%% @author  Serge Aleynikov
  %%% @end
  
negative.code:   ?assertError(failed,     try_pop(Mem, fun(3) -> erlang:error(failed) end)),
    ?assertMatch({3, true},  read_head(Mem, true)),
    ?assertEqual(nil,        pop(Mem)),
    ?assertEqual({106,106,106,1024}, header(Mem)),
    ?assert(purge(Mem)),
    ?assert(is_empty(Mem)),
    
    ?assertEqual([], [R || R <- [push(Mem, I) || I <- [a,b,1,2]], R /= ok]),
    ?assertEqual([a,b,1,2], lists:reverse(pop(Mem, [], fun(I,S) -> {cont, [I | S]} end))),
    ?assert(is_empty(Mem)),
    Term = string:copies("x", 128),
    ?assertEqual(ok,        push(Mem, Term, 9)),
    ?assertEqual(ok,        push(Mem, Term, 6)),
    ?assertEqual(ok,        push(Mem, Term, 1)),
    ?assertEqual([Term, Term, Term], lists:reverse(pop(Mem, [], fun(I,S) -> {cont, [I | S]} end))),
    ?assertEqual(ok, flush(Mem)).
  
  file_size()             -> file_size(element(2, os:type())).
  