if ( handleChild( childExecutor ) )
childHasNext = handleChild( childExecutor ) || childHasNext; if ( childHasNext && unfinishedExecutor!=null )
	protected boolean traverseChildren( )	{		// need relayout		if ( last != null )		{			parent.addArea( last );			last = null;			if ( breakAfterRelayout )			{				breakAfterRelayout = false;				return true;			}		}		boolean childBreak = false;		if ( children.size( ) > 0 )		{			Iterator iterLM = children.iterator( );			while ( iterLM.hasNext( ) )			{				PDFAbstractLM childLM = (PDFAbstractLM) iterLM.next( );				child = childLM;				boolean currentBreak = childLM.layout( );				if ( currentBreak )				{					childBreak = true;				}				else				{					iterLM.remove( );				}			}			if ( childBreak )			{				return true;			}		}		while ( executor.hasNextChild( ) )		{			IReportItemExecutor childExecutor = executor.getNextChild( );			assert ( childExecutor != null );			if ( handleChild( childExecutor ) )			{				if ( lineFinished )				{					return true;				}			}		}		return false;	}