let extract_common ~kind p l =
  let ts =
    if Lang.to_bool (List.assoc "track_sensitive" p) then
      Sensitive
    else
      Insensitive
  in
  let tr =
    let tr = Lang.to_list (List.assoc "transitions" p) in
    let ltr = List.length tr in
      if ltr > l then raise (Lang.Invalid_value
                               ((List.assoc "transitions" p),
                                "Too many transitions")) ;
      if ltr < l then
        tr @ (Utils.make_list (l-ltr) (default_transition kind))
      else
        tr
  in
  let replay = Lang.to_bool (List.assoc "replay_metadata" p) in
    replay,ts,tr