findNodeWithValue( root, value.toString( ), container );
findNodeWithValue( root, value.toString( ), container, new VisitingRecorder() );
	private static void populateRoot( ATreeNode root )	{		Object[] toBeIterated = root.getChildren( );		for ( int i = 0; i < toBeIterated.length; i++ )		{			Object value = ( (ATreeNode) toBeIterated[i] ).getDataType( );// .getValue(																			// );			List container = new ArrayList( );			findNodeWithValue( root, value.toString( ), container );			for ( int j = 0; j < container.size( ); j++ )			{				if ( ( (ATreeNode) container.get( j ) ).getChildren( ).length == 0 )				{					Object[] os = ( (ATreeNode) toBeIterated[i] ).getChildren( );					for ( int k = 0; k < os.length; k++)					{						if( !(((ATreeNode)os[k]).getDataType()!= null && ((ATreeNode)os[k]).getDataType().equals(((ATreeNode) container.get( j )).getDataType())))							( (ATreeNode) container.get( j ) ).addChild( os[k]);					}							}			}		}	}