procedure(wmExpandDescendants(_field itemSym) let((trees childItems) ;Recursive expand hiExpandTreeItem(itemSym nil) trees = hiGetTree(eval(itemSym)) ; Note eval ;Possibly warrants a seperate forum post, but hiGetTree sometimes returns a list? Which according to docs should be s_treeName/nil foreach(childTree if(listp(trees) then trees else list(trees)) childItems = hiGetTreeItems(eval(childTree)) ; Note eval foreach(child childItems wmExpandDescendants(nil child) ; recursive call ) ) t ) )