class MultiAttributeCollection extends MultiAttributeProvider implements AttributeCollection {

	@Override
	public boolean removeAllAttributes() {
		final boolean b = this.runProviderEvents.getAndSet(false);
		try {
			boolean changed = false;
			for (final AttributeProvider c : containers()) {
				if (c instanceof AttributeCollection) {
					changed = ((AttributeCollection) c).removeAllAttributes() || changed;
				}
			}
			if (changed) {
				this.cache.clear();
				this.names = null;
				fireAttributeChange(new AttributeChangeEvent(this, Type.REMOVE_ALL, null, null, null, null));
			}
			return changed;
		} finally {
			this.runProviderEvents.set(b);
		}
	}

}