public function init(array $containerDump = [])
    {
        if (0 < count($containerDump)) {
            $this->rawDefinitions = $containerDump['services'];

            if (isset($containerDump['parameters'])) {
                $this->getParameterBag()->add($containerDump['parameters']);
            }

            if (isset($containerDump['aliases'])) {
                $this->addAliases($containerDump['aliases']);
            }

            $this->alreadyCompiled = $containerDump['is_compiled'];
        } elseif ($this->hasParameter('services_dump') && $this->hasParameter('is_compiled')) {
            $this->rawDefinitions = unserialize($this->getParameter('services_dump'));
            $this->getParameterBag()->remove('services_dump');
            $this->alreadyCompiled = $this->getParameter('is_compiled');
            $this->getParameterBag()->remove('is_compiled');
        } else {
            throw new \InvalidArgumentException(
                'Unable to find services definitions in provided parameters or in current container'
            );
        }

        $this->rawDefinitionsId = array_keys($this->rawDefinitions);
        $this->is_restored = true;
    }