public static <T,P>Optional<T> findByPath(TreeDef<T> treeDef,T node,Function<? super T,?> treeMapper,List<P> path,Function<? super P,?> pathMapper){
  return findByPath(treeDef,node,path,null);
}

public static < T , P > Optional < T > findByPath ( TreeDef < T > treeDef , T node , Function < ? super T , ? > treeMapper , List < P > path , Function < ? super P , ? > pathMapper ) { return findByPath ( treeDef , node , path , null ) ; }
finds a child treenode based on its path . < p > searches the child nodes for the first element , then that node ' s children for the second element , etc .
