code: private void joinAndStoreBundle(JoinableResourceBundle bundle) {
  
  		BundleProcessingStatus status = new BundleProcessingStatus(BundleProcessingStatus.FILE_PROCESSING_TYPE, bundle,
  				resourceHandler, config);
  		JoinableResourceBundleContent store = null;
  
  		// Process the bundle for searching variant
  		if (needToSearchForVariantInPostProcess || hasVariantPostProcessor(bundle)) {
  			status.setSearchingPostProcessorVariants(true);
  			joinAndPostProcessBundle(bundle, status);
  
  			// Process the bundles
  			status.setSearchingPostProcessorVariants(false);
  			Map<String, VariantSet> postProcessVariants = status.getPostProcessVariants();
  			if (!postProcessVariants.isEmpty()) {
  				if (LOGGER.isDebugEnabled()) {
  					LOGGER.debug(
  							"Post process variants found for bundle " + bundle.getId() + ":" + postProcessVariants);
  				}
  				Map<String, VariantSet> newVariants = VariantUtils.concatVariants(bundle.getVariants(),
  						postProcessVariants);
  				bundle.setVariants(newVariants);
  				joinAndPostProcessBundle(bundle, status);
  			}
  		} else {
  			status.setSearchingPostProcessorVariants(false);
  			joinAndPostProcessBundle(bundle, status);
  		}
  
  		// Store the collected resources as a single file, both in text and
  		// gzip formats.
  		store = joinAndPostprocessBundle(bundle, null, status);
  		storeBundle(bundle.getId(), store);
  
  		// Set the data hascode in the bundle, in case the prefix needs to
  		// be generated
  		initBundleDataHashcode(bundle, store, null);
  
  	}
docs: Joins the members of a bundle and stores it
  
  @param bundle
  the bundle
  @param the
  flag indicating if we should process the bundle or not