public static <T>TreeNode<T> copy(TreeDef<T> treeDef,T root){
  return copy(treeDef,root,Function.identity());
}

public static < T > TreeNode < T > copy ( TreeDef < T > treeDef , T root ) { return copy ( treeDef , root , Function . identity ( ) ) ; }
creates a hierarchy of treenodes that copies the structure and content of the given tree .
