Bug 261147 [CommonNavigator] Navigator label provider uses inconsistent methods to do the same thing
In NavigatorContentServiceLabelProvider some of the methods use findContentExtensionsWithPossibleChild and others use findRelevantLabelProvider. The latter is better and they should all use that one.
bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceLabelProvider.java
private void findUpdateLabel(NavigatorContentExtension foundExtension, ReusableViewerLabel label, TreePath elementPath) {
		
		ILabelProvider labelProvider = foundExtension.getLabelProvider();
		if (labelProvider instanceof ITreePathLabelProvider) {
			ITreePathLabelProvider tplp = (ITreePathLabelProvider) labelProvider;
			tplp.updateLabel(label, elementPath);
		} else {
			label.setImage(labelProvider.getImage(elementPath.getLastSegment()));
			label.setText(labelProvider.getText(elementPath.getLastSegment()));
		}		
		 
		if(shouldContinue(label, foundExtension)) {
			findUpdateLabel(contentService.getExtension(foundExtension.getDescriptor().getOverriddenDescriptor()), label, elementPath);
		}   
	}
 
	private boolean shouldContinue(ReusableViewerLabel label, NavigatorContentExtension foundExtension) {
		if(foundExtension.getDescriptor().getOverriddenDescriptor() != null) {			
			return !(label.isValid() && label.hasChanged()); 
		}
		return false;
	}
	/* (non-Javadoc)
	 * @see org.eclipse.jface.viewers.ILabelProviderListener#labelProviderChanged(org.eclipse.jface.viewers.LabelProviderChangedEvent)
	 */
	public void labelProviderChanged(LabelProviderChangedEvent event) { 
		fireLabelProviderChanged(event);		
	}
}