code: private void joinAndPostProcessBundle(CompositeResourceBundle composite, BundleProcessingStatus status) {
  		JoinableResourceBundleContent store;
  
  		stopProcessIfNeeded();
  
  		List<Map<String, String>> allVariants = VariantUtils.getAllVariants(composite.getVariants());
  		// Add the default bundle variant (the non variant one)
  		allVariants.add(null);
  		// Process all variants
  		for (Map<String, String> variants : allVariants) {
  			status.setBundleVariants(variants);
  			store = new JoinableResourceBundleContent();
  			for (JoinableResourceBundle childbundle : composite.getChildBundles()) {
  				if (!childbundle.getInclusionPattern().isIncludeOnlyOnDebug()) {
  					JoinableResourceBundleContent childContent = joinAndPostprocessBundle(childbundle, variants,
  							status);
  					// Do unitary postprocessing.
  					status.setProcessingType(BundleProcessingStatus.FILE_PROCESSING_TYPE);
  					StringBuffer content = executeUnitaryPostProcessing(composite, status, childContent.getContent(),
  							this.unitaryCompositePostProcessor);
  					childContent.setContent(content);
  					store.append(childContent);
  				}
  			}
  
  			// Post process composite bundle as needed
  			store = postProcessJoinedCompositeBundle(composite, store.getContent(), status);
  
  			String variantKey = VariantUtils.getVariantKey(variants);
  			String name = VariantUtils.getVariantBundleName(composite.getId(), variantKey, false);
  			storeBundle(name, store);
  			initBundleDataHashcode(composite, store, variantKey);
  		}
  	}
docs: Joins and post process the variant composite bundle
  
  @param composite
  the composite bundle
  @param status
  the status
  @param compositeBundleVariants
  the variants