To be clear, because I think it may have slipped by, when I say recursive data structures I mean that in contrast to recursive code: not necessarily a function calling itself, but a type T with a member that points to another T. Recursive code and recursive data structures do often go together, but it’s possible to work with a recursive data structure using non-recursive code.