A unique identifier for anything that we create a debuginfo node for.
The types it contains are expected to already be normalized (which
is asserted in the constructors).
This function enables creating debuginfo nodes that can recursively refer to themselves.
It will first insert the given stub into the type map and only then execute the members
and generics closures passed in. These closures have access to the stub so they can
directly attach fields to them. If the type of a field transitively refers back
to the type currently being built, the stub will already be found in the type map,
which effectively breaks the recursion cycle.