let rec collect_labels ls = function
  | Pnamed(l,p) -> collect_labels (l::ls) p
  | p -> List.rev ls , p