class LabeledSourceData {

	public final SourceData compute(Map<String, String> labels, ConfigUtils.Prefix prefix, String target,
			boolean profileSources, boolean failFast, String namespace, String[] activeProfiles) {<FILL_FUNCTION_BODY>}

	/**
	 * Implementation specific (fabric8 or k8s-native) way to get the data from then given
	 * source names.
	 * @param labels the ones that have been configured
	 * @param profiles profiles to taken into account when gathering source data. Can be
	 * empty.
	 * @return a container that holds the names of the source that were found and their
	 * data
	 */
	public abstract MultipleSourcesContainer dataSupplier(Map<String, String> labels, Set<String> profiles);

}


		MultipleSourcesContainer data = MultipleSourcesContainer.empty();

		try {
			Set<String> profiles = Set.of();
			if (profileSources) {
				profiles = Arrays.stream(activeProfiles).collect(Collectors.toSet());
			}
			data = dataSupplier(labels, profiles);

			// need this check because when there is no data, the name of the property
			// source
			// is using provided labels,
			// unlike when the data is present: when we use secret names
			if (data.names().isEmpty()) {
				String names = labels.keySet().stream().sorted()
						.collect(Collectors.joining(PROPERTY_SOURCE_NAME_SEPARATOR));
				return SourceData.emptyRecord(ConfigUtils.sourceName(target, names, namespace));
			}

			if (prefix != ConfigUtils.Prefix.DEFAULT) {

				String prefixToUse;
				if (prefix == ConfigUtils.Prefix.KNOWN) {
					prefixToUse = prefix.prefixProvider().get();
				}
				else {
					prefixToUse = data.names().stream().sorted()
							.collect(Collectors.joining(PROPERTY_SOURCE_NAME_SEPARATOR));
				}

				PrefixContext prefixContext = new PrefixContext(data.data(), prefixToUse, namespace, data.names());
				return ConfigUtils.withPrefix(target, prefixContext);
			}
		}
		catch (Exception e) {
			onException(failFast, e);
		}

		String names = data.names().stream().sorted().collect(Collectors.joining(PROPERTY_SOURCE_NAME_SEPARATOR));
		return new SourceData(ConfigUtils.sourceName(target, names, namespace), data.data());

	
<no_super_class>