anchor.diff:      {atomic, Result} = mnesia:transaction(T),
       Result.
   
  -%% has side-effects. Will fill the ETS table 'repos'
   -spec priv_populate_repos([{binary(), binary()}]) -> [true].
   priv_populate_repos(RepoList) ->
       T = fun() ->
  
positive.code: -behaviour(gen_server).
  
  %% API
  -export([start_link/1, get_user_permissions/1
          ,add_user/2, remove_user/1, get_users/0
          ,add_repo/2, remove_repo/1, get_repos/0]).
  
  
negative.code: %%--------------------------------------------------------------------
  init({RepoList, ACL}) ->
      %% Note: Don't create tables anymore, once Mnesia persistence is configured
      mnesia:create_table(repo, [{ram_copies, [node() | nodes()]}
                                ,{type, set}
                                ,{attributes, record_info(fields, repo)}]),
      ok = mnesia:wait_for_tables([repo], 10000),
      priv_populate_repos(RepoList),
      lager:info("Repository list initialized."),
  
      mnesia:create_table(acl, [{ram_copies, [node() | nodes()]}
                               ,{type, set}
                               ,{attributes, record_info(fields, acl)}]),
      ok = mnesia:wait_for_tables([acl], 10000),
      priv_populate_acl(ACL),
      lager:info("Access control list initialized."),
  
  