IDTPM2::GenericAncestorFinder< T, Predicate > Node1 IDTPM2::GenericAncestorFinder < T, Predicate > - m_predicate + GenericAncestorFinder() + predicate() Node3 IDTPM2::PredicateAncestor Finder< T, P >   + PredicateAncestorFinder() Node1->Node3 Node2 IDTPM2::IFinder< T >   + ~IFinder() + findAncestor() + predicate() Node2->Node1