anchor.diff:        throw({not_started, trails})
     end.
   
  +%% @doc Fetch the trail that match with the given path.
   -spec retrieve(route_match()) -> trail().
   retrieve(Path) ->
     case application:get_application(trails) of
  
positive.code: -type metadata() :: #{method() => map()}.
  -export_type([metadata/0]).
  
  -spec single_host_compile([route_path()]) ->
    cowboy_router:dispatch_rules().
  single_host_compile(Trails) ->
    compile([{'_', Trails}]).
  
  -spec compile([{Host::route_match(), Trails::trails()}]) ->
    cowboy_router:dispatch_rules().
  compile([]) -> [];
  
negative.code: -export([constraints/1]).
  -export([store/1, all/0, retrieve/1]).
  
  %% Trail specification
  -opaque trail() ::
    #{ path_match  => cowboy_router:route_match()
     , constraints => cowboy_router:constraints()
  