anchor.diff:          tryMatchInput path (getPath ctx.HttpContext) false
           |> function
               | None      -> async.Return None
  -            | Some args -> routeHandler args ctx
  +            | Some args ->
  +                sprintf "matched routef '%s'" path.Value |> logDebug ctx
  +                routeHandler args ctx
   
   /// Filters an incoming HTTP request based on the request path (case insensitive).
   let routeCi (path : string) =
       fun (ctx : HttpHandlerContext) ->
           if String.Equals(getPath ctx.HttpContext, path, StringComparison.CurrentCultureIgnoreCase)
  -        then Some ctx
  +        then
  +            sprintf "matched routeCi '%s'" path |> logDebug ctx
  +            Some ctx
           else None
           |> async.Return
   
  
positive.code:     fun (ctx : HttpHandlerContext) ->
          async {
              match handlers with
              | []                -> return None
              | handler :: tail   ->
                  let! result = handler ctx
                  match result with
                  | Some c    -> return Some c
                  | None      -> return! choose tail ctx
          }
  
  /// Filters an incoming HTTP request based on the HTTP verb
  
negative.code: type ErrorHandler = exn -> HttpHandler
  
  /// ---------------------------
  /// Logging helper functions
  /// ---------------------------
  
  let private getRequestInfo ctx =
      (ctx.HttpContext.Request.Protocol,
       ctx.HttpContext.Request.Method,
       ctx.HttpContext.Request.Path.ToString())
      |||> sprintf "%s %s %s"
  // let private logResult (msg    : string)
  //                       (ctx    : HttpHandlerContext)
  //                       (result : HttpHandlerContext option) =
  //     if ctx.Logger.IsEnabled LogLevel.Debug then
  //         match result with
  //         | Some ctx  -> sprintf "passed %s" msg
  //         | None      -> sprintf "failed %s" msg
  //         |> sprintf "%s %s" (getRequestInfo ctx)
  //         |> ctx.Logger.LogDebug
  //     result
  
  let private logDebug (ctx : HttpHandlerContext)
                  (msg : string) =
      
      if ctx.Logger.IsEnabled LogLevel.Debug then
          sprintf "%s %s" (getRequestInfo ctx) msg
          |> ctx.Logger.LogDebug
  
  /// ---------------------------
  /// Sub route helper functions
  /// ---------------------------
  
  [<Literal>]
  let private RouteKey = "aspnet_lambda_route"
  