No bugs here, but giving an initial value can hide cases where we fail
to set a value. Use an assert instead so we can see errors if we change
and break this code.
Except break_next which goes out of scope after it's assigned (I guess
it used to be outside the loop).
so, repeated but not circular data is repeatedly output
helpful for serialisation-like uses and more clear because the id was not printed on the actual data structure in this case