zipper package:uniplate -is:exact -is:module

Create a zipper, focused on the top-left value.
Zipper structure, whose root type is the first type argument, and whose focus type is the second type argument.
Create a zipper with a different focus type from the outer type. Will return Nothing if there are no instances of the focus type within the original value.
From a zipper take the whole structure, including any modifications.