code: private void joinAndStoreCompositeResourcebundle(CompositeResourceBundle composite) {
  
  		stopProcessIfNeeded();
  
  		BundleProcessingStatus status = new BundleProcessingStatus(BundleProcessingStatus.FILE_PROCESSING_TYPE,
  				composite, resourceHandler, config);
  
  		// Collect all variant names from child bundles
  		Map<String, VariantSet> compositeBundleVariants = new HashMap<>();
  		for (JoinableResourceBundle childbundle : composite.getChildBundles()) {
  			if (childbundle.getVariants() != null)
  				compositeBundleVariants = VariantUtils.concatVariants(compositeBundleVariants,
  						childbundle.getVariants());
  		}
  		composite.setVariants(compositeBundleVariants);
  
  		if (needToSearchForVariantInPostProcess || hasVariantPostProcessor(composite)) {
  			status.setSearchingPostProcessorVariants(true);
  			joinAndPostProcessBundle(composite, status);
  
  			Map<String, VariantSet> postProcessVariants = status.getPostProcessVariants();
  			if (!postProcessVariants.isEmpty()) {
  				if (LOGGER.isDebugEnabled()) {
  					LOGGER.debug(
  							"Post process variants found for bundle " + composite.getId() + ":" + postProcessVariants);
  				}
  				Map<String, VariantSet> newVariants = VariantUtils.concatVariants(composite.getVariants(),
  						postProcessVariants);
  				composite.setVariants(newVariants);
  				status.setSearchingPostProcessorVariants(false);
  				joinAndPostProcessBundle(composite, status);
  			}
  		} else {
  			status.setSearchingPostProcessorVariants(false);
  			joinAndPostProcessBundle(composite, status);
  		}
  	}
docs: Joins the members of a composite bundle in all its variants, storing in a
  separate file for each variant.
  
  @param composite
  the composite resource bundle