/**
  * @throws UnableToBuild when the source provides something
  * else than an object.
  * @return mixed builder object
  */
 private function getBuilderBasedOn(BuilderObjectProductBuildPlan $p)
 {
     $builderSource = $p->getBuilderSource();
     $builder = $this->objectResolver->resolveValueFrom($builderSource);
     if (!is_object($builder)) {
         throw new UnableToBuild();
     }
     return $builder;
 }