Right now, we allocate a new vector each time. This is not efficient and can matter in the forward simulation case. Instead: * The structs should store the vector * resize it if `idmap == true` * Return Option<[NodeId]> instead of the vector. This proposal is a breaking change.