class MultiAttributeProvider extends AbstractAttributeProvider {

	@Pure
	@Override
	public Collection<String> getAllAttributeNames() {
		if (this.names == null) {
			final Set<String> names = new TreeSet<>(new AttributeNameStringComparator());
			for (final AttributeProvider c : this.containers) {
				names.addAll(c.getAllAttributeNames());
			}
			this.names = names;
		}
		return Collections.unmodifiableSet(this.names);
	}

}