parent.setExtendsElement( grand.getElement( ) );
parent.setExtends( grand );
	public void testBroadcast( ) throws ContentException, NameException,			ExtendsException	{		// set the derivation relationship and the listener.		TextItemHandle parent = designHandle.getElementFactory( ).newTextItem(				"parent" ); //$NON-NLS-1$		TextItemHandle grand = designHandle.getElementFactory( ).newTextItem(				"grand" ); //$NON-NLS-1$		designHandle.getComponents( ).add( parent );		designHandle.getComponents( ).add( grand );		designElement.setExtendsElement( parent.getElement( ) );		parent.setExtendsElement( grand.getElement( ) );		MyActionListener listener = new MyActionListener( );		MyActionListener parentListener = new MyActionListener( );		MyActionListener grandListener = new MyActionListener( );		designElement.addListener( listener );		parent.addListener( parentListener );		grand.addListener( grandListener );		assertTrue( designElement.listeners.contains( listener ) );		assertTrue( parent.getElement( ).listeners.contains( parentListener ) );		assertTrue( grand.getElement( ).listeners.contains( grandListener ) );		// test the original name of the elements.		assertNull( designElement.getProperty( design,				DesignElement.DISPLAY_NAME_PROP ) );		assertNull( parent.getProperty( DesignElement.DISPLAY_NAME_PROP ) );		assertNull( grand.getProperty( DesignElement.DISPLAY_NAME_PROP ) );		// after sendEvent, we test the names again.		NotificationEvent ev = new ExtendsEvent( grand.getElement( ) );		grand.getElement( ).broadcast( ev );		assertTrue( listener.done );		assertEquals( NotificationEvent.DESCENDENT, listener.path );		assertTrue( parentListener.done );		assertEquals( NotificationEvent.DESCENDENT, parentListener.path );		assertTrue( grandListener.done );		assertEquals( NotificationEvent.DIRECT, grandListener.path );	}