let search_in_tree =
  let pred pos t =
    t.t_pos_left <= pos && pos <= t.t_pos_right
  in
  let get_t pos l =
    try Some (List.find (pred pos) l)
    with Not_found -> None  
  in
  let rec iter fallback pos tree =
    if pred pos tree then
      let fb =
        match tree.t_type_info with
          None -> fallback
        | Some (start,stop) ->
            Some (tree.t_pos_left, tree.t_pos_right, start, stop)
      in
      match get_t pos tree.t_children with
        None -> fb
      | Some t -> iter fb pos t 
    else
      fallback    
  in
  iter None