A BluePaint algorithm is one that marks off each record as it processes it. In most cases, a cleanup routine removes the BluePaint afterwords. This is a good case for using try/finally. ---- I usually note which records have been processed in a separate list. This requires no modification to the visited nodes, allows multiple concurrent visitors (assuming they coordinate otherwise on changes), and eliminates the need for a cleanup routine. Is such an approach an alternative way to implement BluePaint or is it a different algorithm altogether? -- CraigPutnam ** BluePaint is not thread safe. That is the alternate algorithm for when thread safety is required. Consider that GarbageCollector''''''s cannot use that mechanism. ''Why blue? Why not cyan? yellow? magenta? key? Is there a historical context to this name?'' *[I'm guessing that it is a metaphor based on the bluing used in metalworking. That bluing is used to make designs, or can be applied and then designs are etched into it, etc.] *Considering the age of BluePaint as an algorithm description (1960's at least) that sounds like a good guess.