public function buildObjectBasedOn(BuildPlan $p)
 {
     $reflectedClass = $this->getReflectedClassBasedOn($p->getClassSource());
     $builtObject = $reflectedClass->newInstanceWithoutConstructor();
     $this->callMethodsOf($builtObject, $reflectedClass, $p->getAllMethodCalls());
     $this->buildPlanByBuildObject->attach($builtObject, $p);
     return $builtObject;
 }
 public function buildObjectBasedOn(BuildPlan $p)
 {
     /* @var $p StaticFactoryProductBuildPlan */
     $factoryMethod = $this->findFactoryMethod($this->getReflectedClassBasedOn($p->getFactoryClass()), $p->getFactoryMethodCall()->getSelector());
     $builtObject = $this->callSpecifiedMethod($factoryMethod, null, $p->getFactoryMethodCall()->getAssignedParamValues());
     $this->buildPlanByBuildObject->attach($builtObject, $p);
     return $builtObject;
 }