+ | Wildcard, ([ loc ] , t, k, `BranchTag) :: (g', t', k', tag) :: s
+ when is_fresh loc ->
+ new_stack
+ (([loc] @+ g', [], [], `BranchTag)
+ :: ([], t' @+ k, k', tag) :: s)
+ | Wildcard, (g, t, k, `BranchTag) :: (g', t', k', tag) :: s ->
+ new_stack
+ ((g', [], [], `BranchTag)
+ :: ([], t' @+ filter_open g @+ k, k', tag) :: s)
+(*
+ | Wildcard, (g, t, k, `BranchTag) :: (g', t', k', tag) :: s
+ when g = [] || is_fresh (List.hd g) ->
+ new_stack
+ ((g', [], [], `BranchTag)
+ :: ([], t' @+ filter_open g @+ k, k', tag) :: s)
+*)
+ | Wildcard, _ -> fail (lazy "can't use wildcard here")