code: public static BlueprintProducer getBlueprintProducer(String producerId, String category, String subsystem){
  		try{
  			//first find producer
  			BlueprintProducer producer = producers.get(producerId);
  			if (producer==null){
  				synchronized(producers){
  					producer = producers.get(producerId);
  					if (producer==null){
  						producer = new BlueprintProducer(producerId, category, subsystem);
  						producers.put(producerId, producer);
  					}
  				}
  			}
  			//end producer lookup
  			return producer;
  		}catch(Exception e){
  			log.error("getBlueprintProducer("+producerId+", "+category+", "+subsystem+ ')', e);
  			throw new RuntimeException("Handler instantiation failed - "+e.getMessage());
  		}
  		
  	}
docs: Returns the blueprint producer with this id. Creates one if none is existing. Uses DLC pattern to reduce synchronization overhead.
  @param producerId
  @param category
  @param subsystem
  @return