Bug 130340 [Decorators] lightweight decorator blinking problem
Mylar uses a lightweight to indicate interest level for any structured viewer (e.g. the most interesting java elements are bold in the Package Explorer). The problem is that when a refresh is requested (e.g. markers change), the elements become unbolded, then bolded again when they're decorated. This is additionally aggrevated by the fact that the pause while they blink can be well over a second because the decoration job priority is so low. A more severe version of this problem shows up when a downstream plug-in (Visual Source Safe is the only one we know of) calls overly frequent refresh/decoration on the Package Explorer. The bold/unbold blinking can be continuous during check-outs and background refreshes. This problem is not Mylar-specific, but should manifest for anyone who uses bold font in a lightweight decorator. Is there a way that the font, text, and image from the last decoration could be preserved until the decoration happens and not disappear when the refresh happens? It seems that this would give behavior that's consistent with a regular decorator and be safe to downstream plug-ins causing this sort of blinking.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewer.java
TreeItem treeItem = (TreeItem)items[i];
			treeItem.setItemCount(count);
		}		
	}
	/**
	 * For a TreeViewer with a tree with the VIRTUAL style bit set, replace the
	 * given parent's child at index with the given element. If the given parent
	 * is this viewer's input, this will replace the root element at the given
	 * index.
	 * <p>
	 * This method should be called by implementers of ILazyTreeContentProvider
	 * to populate this viewer.
	 * </p>
	 * @param parent the parent of the element that should be updated
	 * @param index the index in the parent's children
	 * @param element the new element
	 * 
	 * @see #setChildCount(Object, int)
	 * @see ILazyTreeContentProvider
     * 
	 * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
	 * part of a work in progress. There is no guarantee that this API will remain
	 * unchanged during the 3.2 release cycle. Please do not use this API without
	 * consulting with the Platform/UI team.
	 * </p>
     * 
	 * @since 3.2
	 */
	public void replace(Object parent, int index, Object element) {
		if(parent.equals(getInput())) {