anchor.diff:  %% Return true or false depending on if element is in queue
   %% 
   %% O(length(Q)) worst case
  --spec member(Item, Q) -> boolean() when
  -      Item :: term(),
  -      Q :: queue().
  +-spec member(Item :: term(), Q :: queue()) -> boolean().
   member(X, {R,F}) when is_list(R), is_list(F) ->
       lists:member(X, R) orelse lists:member(X, F);
   member(X, Q) ->
  
positive.code: %% Remove the first element and return resulting queue
  %%
  %% O(1) amortized
  -spec drop(Q1) -> Q2 when
        Q1 :: queue(),
        Q2 :: queue().
  drop({[],[]}=Q) ->
      erlang:error(empty, [Q]);
  drop({[_],[]}) ->
  
negative.code: %% Return the last element in the queue
  %%
  %% O(1) since the queue is supposed to be well formed
  -spec peek_r(Q :: queue()) -> empty | {value,Item :: term()}.
  peek_r({[],[]}) ->
      empty;
  peek_r({[H|_],F}) when is_list(F) ->
  