/**
  * @param ServiceDefinition $definition
  *
  * @return Closure
  */
 private function createInstanceFactory(ServiceDefinition $definition)
 {
     return function () use($definition) {
         $className = $definition->getClass();
         $instance = new $className(...$this->resolveArguments($definition->getArguments()));
         foreach ($definition->getMethods() as $name => $args) {
             $instance->{$name}(...$this->resolveArguments($args));
         }
         return $instance;
     };
 }
 /**
  * @param ClassDefinition   $service
  * @param ServiceDefinition $definition
  */
 private function addMethodCalls(ClassDefinition $service, ServiceDefinition $definition)
 {
     foreach ($definition->getMethods() as $method => $args) {
         $service->withMethodCall($method, $this->injectContainer($args));
     }
 }
 public function testMethodsDefaultToAnEmptyList()
 {
     $definition = new ServiceDefinition('service_name', []);
     assertEquals([], $definition->getMethods());
 }