The best way to tackle these problems is draw a diagram. Work through the execution drawing a balloon for each object that is created. Show how the objects are connected together by drawing strings between them. You will end up with a connected structure of balloons without a reference to them from the main
thread of execution. When the garbage collector runs some or all of those balloons will run their finalizers printing out their contents in some order.
[ July 25, 2006: Message edited by: Barry Gaunt ]