code: public static List<DependencyNode> select(DependencyNode node, Predicate<DependencyNode> filter)
     {
        List<DependencyNode> result = new ArrayList<DependencyNode>();
        selectInternal(node, filter, result);
        return result;
     }
docs: Returns the {@link DependencyNode} objects that satisfy the filter. The nodes are traversed using a pre order
  iterator
  
  @param root a {@link DependencyNode} as the starting point
  @param filter the {@link DependencyNodeFilter} being used
  @return the {@link Collection} with the output
  
  @see #preorderIterator(DependencyNode)