code: private AbstractChainedResourceBundlePostProcessor addOrCreateChain(
  			AbstractChainedResourceBundlePostProcessor chain, String key) {
  
  		AbstractChainedResourceBundlePostProcessor toAdd;
  
  		if (customPostProcessors.get(key) == null) {
  			toAdd = buildProcessorByKey(key);
  			if (toAdd instanceof BundlingProcessLifeCycleListener && !listeners.contains(toAdd)) {
  				listeners.add((BundlingProcessLifeCycleListener) toAdd);
  			}
  		} else {
  			toAdd = (AbstractChainedResourceBundlePostProcessor) customPostProcessors.get(key);
  		}
  
  		AbstractChainedResourceBundlePostProcessor newChainResult = null;
  		if (chain == null) {
  			newChainResult = toAdd;
  		} else {
  			chain.addNextProcessor(toAdd);
  			newChainResult = chain;
  		}
  
  		return newChainResult;
  	}
docs: Creates an AbstractChainedResourceBundlePostProcessor. If the supplied
  chain is null, the new chain is returned. Otherwise it is added to the
  existing chain.
  
  @param chain
  the chained post processor
  @param key
  the id of the post processor
  @return the chained post processor, with the new post processor.