--- /dev/null
+declare namespace fun = 'have.more.fun';
+
+declare function fun:closure($input as node()*, $result as node()*) as node()*
+{
+ let $current := $input/parlist/listitem/parlist/listitem
+ let $new := $current except $result
+ let $all := ($result,$new)
+
+ return
+ if(exists($new))
+ then ($new, fun:closure($new,$all))
+ else ()
+};
+
+doc()//listitem[text/keyword or fun:closure(.,())/text/keyword]/text/keyword
\ No newline at end of file