/**
  * Pre-process configuration. (v3)
  *
  * Checks for invokables, and, if found, maps them to the
  * component-specific RouteInvokableFactory; removes the invokables entry
  * before passing to the parent.
  *
  * @param array $config
  * @return void
  */
 public function configure(array $config)
 {
     if (isset($config['invokables']) && !empty($config['invokables'])) {
         $aliases = $this->createAliasesForInvokables($config['invokables']);
         $factories = $this->createFactoriesForInvokables($config['invokables']);
         if (!empty($aliases)) {
             $config['aliases'] = isset($config['aliases']) ? array_merge($config['aliases'], $aliases) : $aliases;
         }
         $config['factories'] = isset($config['factories']) ? array_merge($config['factories'], $factories) : $factories;
         unset($config['invokables']);
     }
     parent::configure($config);
 }
 /**
  * Overrides parent::configure in order to ensure default initializers are in expected positions.
  *
  * Always pushes `injectFactory` to top of initializer stack, and
  * `callElementInit` to the bottom.
  *
  * {@inheritDoc}
  */
 public function configure(array $config)
 {
     $firstInitializer = [$this, 'injectFactory'];
     $lastInitializer = [$this, 'callElementInit'];
     foreach ([$firstInitializer, $lastInitializer] as $default) {
         if (false === ($index = array_search($default, $this->initializers))) {
             continue;
         }
         unset($this->initializers[$index]);
     }
     parent::configure($config);
     array_unshift($this->initializers, $firstInitializer);
     array_push($this->initializers, $lastInitializer);
     return $this;
 }