TreeYielder methods
traverse all attributes of an object looking for subObjects that meet a certain criteria. yield them.
memo is a dictionary to keep track of objects that have already been seen
The original object is added to the memo and also checked for yieldValue