public TreeNode getNode( Path path, int segment ){ if( segment == path.getSegmentCount() ) return this; if( children == null ){ children = new ArrayList<TreeNode>(); } String check = path.getSegment( segment ); for( TreeNode child : children ){ if( check.equals( child.getPath().getLastSegment() )){ return child.getNode( path, segment+1 ); } } TreeNode child = new TreeNode( this, path.subPath( 0, segment+1 ) ); children.add( child ); fireNodeAdded( this, child ); return child.getNode( path, segment+1 ); }