Util that visits a class, and all of its classes, recursively. Typical use case for many things.
Ideally a lot of the things (like which fields are considered, what happens if a type was already visited, how to unwrap a field's type, how the path is created) are overridable.