anchor.diff:  %% @see expand/2
   %% @see compact/1
   
  --spec normalize(List, Stages) -> List when
  -      List :: [term()],
  +-spec normalize(ListIn, Stages) -> ListOut when
  +      ListIn :: [term()],
         Stages :: [Operation],
         Operation :: {'aliases', Aliases}
                    | {'negations', Negations}
                    | {'expand', Expansions},
         Aliases :: [{Key, Key}],
         Negations :: [{Key, Key}],
  -      Expansions :: [{Property :: property(), Expansion :: [term()]}].
  +      Expansions :: [{Property :: property(), Expansion :: [term()]}],
  +      ListOut :: [term()].
   
   normalize(L, [{aliases, As} | Xs]) ->
       normalize(substitute_aliases(As, L), Xs);
  
positive.code: %%
  %% @see get_all_values/2
  
  -spec append_values(Key, List) -> List when
        Key :: term(),
        List :: [term()].
  
  append_values(Key, [P | Ps]) ->
      if is_atom(P), P =:= Key ->
  
negative.code: 
  -export_type([property/0, proplist/0]).
  
  -type property()  :: atom() | tuple().
  -type proplist()  :: [property()].
  
  %% ---------------------------------------------------------------------
  