/**
  * Gets or creates a {@link TransformerJob} for a particular {@link TransformerComponentBuilder}.
  * Since {@link MultiStreamComponent}s are subtypes of {@link Transformer} it is necesary to have
  * this caching mechanism in place in order to allow diamond-shaped component graphs where
  * multiple streams include the same component.
  *
  * @param validate
  * @param tjb
  * @return
  */
 public TransformerJob getOrCreateTransformerJob(
     boolean validate, TransformerComponentBuilder<?> tjb) {
   TransformerJob componentJob = (TransformerJob) _componentJobs.get(tjb);
   if (componentJob == null) {
     try {
       componentJob = tjb.toTransformerJob(validate, this);
       _componentJobs.put(tjb, componentJob);
     } catch (IllegalStateException e) {
       throw new IllegalStateException(
           "Could not create transformer job from builder: " + tjb + ", (" + e.getMessage() + ")",
           e);
     }
   }
   return componentJob;
 }