@Override
	protected void updateOpacity(double percentComplete) {

		//
		// Fade Out will start with the current alpha, bringing the value down to the minimum.
		// This will only have an effect if the current alpha is not already at the minimum, 
		// such as from a previous filter.
		//
		double percentRemaining = 1.0 - percentComplete;
		double fadeOutAlpha = Math.max(percentRemaining, getMinimumAlpha());

		failedVertices.forEach(v -> fadeOutAlpha(v, fadeOutAlpha));
		failedEdges.forEach(e -> fadeOutAlpha(e, fadeOutAlpha));

		//
		// Fade In will start with the current alpha, bringing the value up to 1.0.  This will
		// only have an effect if the current alpha is not already 1.0, such as from a 
		// previous filter.
		//
		double fadeInAlpha = percentComplete;
		passedVertices.forEach(v -> fadeInAlpha(v, fadeInAlpha));
		passedEdges.forEach(e -> fadeInAlpha(e, fadeInAlpha));

	}
Constructor

@param viewer the viewer upon which to operate
@param graph the graph to filter
@param filter the predicate used to determine what passes the filter
@param remove true signals to remove the vertices from the view; false signals to leave
              them visible, but faded to show that they failed the filter
Ghidra/Framework/Graph/src/main/java/ghidra/graph/job/FilterVerticesJob.java