Buscando un JToken específico por nombre en una jerarquía de JObject

Tengo alguna respuesta de Json del servidor, por ejemplo:

{"routes" : [
  {
     "bounds" : {
        "northeast" : {
           "lat" : 50.4639653,
           "lng" : 30.6325177
        },
        "southwest" : {
           "lat" : 50.4599625,
           "lng" : 30.6272425
        }
     },
     "copyrights" : "Map data ©2013 Google",
     "legs" : [
        {
           "distance" : {
              "text" : "1.7 km",
              "value" : 1729
           },
           "duration" : {
              "text" : "4 mins",
              "value" : 223
           },

Y quiero obtener el valor del token 'texto' de

      "legs" : [
        {
           "distance" : {
              "text" : "1.7 km",
              "value" : 1729
           },

que es una cadena con valor "1.7 km".

Pregunta: ¿hay alguna función incorporada en NewtonsoftJson lib que se pueda ver como:

public string(or JToken) GetJtokenByName(JObject document, string jtokenName)

o ¿necesito implementar algún método recursivo que busque JToken por nombre en todos los JTokens y JArrays en JObject?

Respuestas a la pregunta(3)

Su respuesta a la pregunta