anchor.diff:  // subRouteCi Tests
   // ---------------------------------
   
  -[<Fact>]
  -let ``subRouteCi: Non-filtering handler after subRouteCi is called`` () =
  -    let ctx = mockHttpContext Version40
  +let subRouteCiTest compatMode requestPath expected =
  +    let ctx = mockHttpContext compatMode
       mockJson ctx (Newtonsoft None)
       let app =
           GET >=> choose [
  
positive.code: 
      ctx.Items.Returns (new Dictionary<obj,obj>() :> IDictionary<obj,obj>) |> ignore
      ctx.Request.Method.ReturnsForAnyArgs "GET" |> ignore
      ctx.Request.Path.ReturnsForAnyArgs (PathString("/FOO/bar")) |> ignore
      ctx.Response.Body <- new MemoryStream()
      let expected = "subroute /foo/bar"
  
      task {
          let! result = app next ctx
  
          match result with
          | None     -> assertFailf "Result was expected to be %s" expected
          | Some ctx -> Assert.Equal(expected, getBody ctx)
      }
  
  [<Fact>]
  let ``subRouteCi: Nested route after subRouteCi is still case sensitive`` () =
      let ctx = mockHttpContext Version40
      mockJson ctx (Newtonsoft None)
      let app =
          GET >=> choose [
  
negative.code: 
      ctx.Items.Returns (new Dictionary<obj,obj>() :> IDictionary<obj,obj>) |> ignore
      ctx.Request.Method.ReturnsForAnyArgs "GET" |> ignore
      ctx.Request.Path.ReturnsForAnyArgs (PathString(requestPath)) |> ignore
      ctx.Response.Body <- new MemoryStream()
  
      task {
          let! result = app next ctx
  
          match result with
          | None     -> assertFailf "Result was expected to be %s" expected
          | Some ctx -> Assert.Equal(expected, getBody ctx)
      }
  
  [<Fact>]
  let ``subRouteCi (compatMode 40): Non-filtering handler after subRouteCi is called`` () =
      subRouteCiTest Version40 "/FOO" "subroute /foo"
  
  [<Fact>]
  let ``subRouteCi (compatMode 36): Non-filtering handler after subRouteCi is called`` () =
      subRouteCiTest Version36 "/FOO" "subroute /foo"
  
  [<Fact>]
  let ``subRouteCi (compatMode 40): Nested route after subRouteCi is called`` () =
      nestedRouteAfterSubRouteCiTest Version40 "/FOO/bar" "subroute /foo/bar"
  
  [<Fact>]
  let ``subRouteCi (compatMode 36): Nested route after subRouteCi is called`` () =
      nestedRouteAfterSubRouteCiTest Version36 "/FOO/bar" "subroute /foo/bar"
  
  [<Fact>]
  let ``subRouteCi (compatMode 40): Nested route after subRouteCi is still case sensitive`` () =
      nestedRouteAfterSubRouteCiIsStillCaseSensitiveTest Version40 "/FOO/BAR" "Not found - nested"
  
  [<Fact>]
  let ``subRouteCi (compatMode 36): Nested route after subRouteCi is still case sensitive`` () =
      nestedRouteAfterSubRouteCiIsStillCaseSensitiveTest Version36 "/FOO/BAR" "Not found - nested"
  
  [<Fact>]
  let ``subRouteCi (compatMode 40): Nested routeCi after subRouteCi is called`` () =
      nestedRouteCiAfterSubRouteCiTest Version40 "/FOO/BAR" "subroute /foo/bar"
  
  [<Fact>]
  let ``subRouteCi (compatMode 36): Nested routeCi after subRouteCi is called`` () =
      nestedRouteCiAfterSubRouteCiTest Version36 "/FOO/BAR" "subroute /foo/bar"