| Conditions | 4 | 
| Paths | 2 | 
| Total Lines | 25 | 
| Code Lines | 16 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 1 | ||
| Bugs | 0 | Features | 0 | 
| 1 | <?php  | 
            ||
| 19 | public function __invoke($module, string $classDir): Container  | 
            ||
| 20 |     { | 
            ||
| 21 | $module = $module ?? new NullModule();  | 
            ||
| 22 | $builtInModules = [  | 
            ||
| 23 | new AssistedModule(),  | 
            ||
| 24 | new ProviderSetModule(),  | 
            ||
| 25 | new MultiBindingModule(),  | 
            ||
| 26 | ];  | 
            ||
| 27 | $modules = array_merge($builtInModules, is_array($module) ? $module : [$module]);  | 
            ||
| 28 | $baseModule = array_shift($modules);  | 
            ||
| 29 |         foreach ($modules as $module) { | 
            ||
| 30 | $baseModule->install($module);  | 
            ||
| 31 | }  | 
            ||
| 32 | |||
| 33 | $container = $baseModule->getContainer();  | 
            ||
| 34 |         $container->map(static function (DependencyInterface $dependency) use ($classDir) { | 
            ||
| 35 |             if ($dependency instanceof NullObjectDependency) { | 
            ||
| 36 | return $dependency->toNull($classDir);  | 
            ||
| 37 | }  | 
            ||
| 38 | |||
| 39 | return $dependency;  | 
            ||
| 40 | });  | 
            ||
| 41 | $container->weaveAspects(new Compiler($classDir));  | 
            ||
| 42 | |||
| 43 | return $container;  | 
            ||
| 44 | }  | 
            ||
| 46 |