class BaseCoverageProcessingNode implements
		CoverageProcessingNode {

	public void dispose(boolean force) {

		// /////////////////////////////////////////////////////////////////////
		//
		// Do we need to dispose this node?
		//
		// /////////////////////////////////////////////////////////////////////
		if (disposed)
			return;

		// /////////////////////////////////////////////////////////////////////
		//
		// Cleaning the output we have generated
		//
		// /////////////////////////////////////////////////////////////////////
		if (output != null)
			output.dispose(force);

		// /////////////////////////////////////////////////////////////////////
		//
		// Removing myself as a sink for my sources
		//
		// /////////////////////////////////////////////////////////////////////
		final Iterator<CoverageProcessingNode>it = sources.iterator();
		while (it.hasNext()) {
			final CoverageProcessingNode source = it.next();
			source.removeSink(this);
		}
		sources.clear();

		// /////////////////////////////////////////////////////////////////////
		//
		// Cleaning sinks
		//
		// /////////////////////////////////////////////////////////////////////
		sinks.clear();

		// /////////////////////////////////////////////////////////////////////
		//
		// Done
		//
		// /////////////////////////////////////////////////////////////////////
		disposed = true;


		if(LOGGER.isLoggable(Level.FINE))
			LOGGER.fine("disposed node \n" + this.toString());

	}

	public  BaseCoverageProcessingNode(InternationalString name,
			InternationalString description);
	public  BaseCoverageProcessingNode(int maxSources, InternationalString name,
			InternationalString description);
	public  BaseCoverageProcessingNode(int maxSources, Hints hints,
			InternationalString name, InternationalString description);

}