anchor.diff:  cons(Key, Val, Rest) ->
       [{Key, Val}|Rest].
   
  +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  +%%
  +%% Used primarily to replace 'well-known keys' like 'all_nodes' in
  +%% schema. This makes the schemas more portable.
  +
  +subst(Key, Val, [X|Xs]) ->
  +    [subst(Key, Val, X)|subst(Key, Val, Xs)];
  +subst(Key, Val, []) ->
  +    [];
  +subst(Key, Val, Tuple) when is_tuple(Tuple) ->
  +    list_to_tuple([ subst(Key, Val, X) || X <- tuple_to_list(Tuple) ]);
  +subst(Key, Val, Term) when is_atom(Term) ->
  +    if
  +	Key == Term ->
  +	    Val;
  +	true ->
  +	    Term
  +    end;
  +subst(_Key, _Val, Term) ->
  +    Term.
  +
  +    
  
positive.code:     load_and_migrate/1,
      load_schema/1,
      migrate_to/1,
      diff/2
     ]).
  
  -export([view_schemas/0,
  
negative.code: %% - performed a 1-record layout transformation
  %%   * black triangle day :-)
  %%   * does NOT properly detect that migration failed
  %% - schema merge supported
  %%   * still some usage issues, e.g., 'all_nodes'
  %%
  %% UNFINISHED
  %% - reuse parametrized schema
  