protected function createContainer(ContainerModuleLoader $loader, ScopeLoader $scopes)
	{
		$contextCachePath = $this->cacheDirectory . DIRECTORY_SEPARATOR . $this->contextName;
		$cacheFile = $contextCachePath . DIRECTORY_SEPARATOR . 'container.php';
		
		$containerTypeName = __NAMESPACE__ . '\\CompiledContainer';
		$proxyPath = Filesystem::createDirectory($contextCachePath . DIRECTORY_SEPARATOR . 'scoped');
		
		$scopedProxies = [];
		
		foreach($scopes as $scope)
		{
			foreach($scope->getProxyTypeNames() as $typeName)
			{
				$scopedProxies[] = $typeName;
			}
		}
		
		if(!is_file($cacheFile) || $this->cache->isModified())
		{
			$builder = $this->createContainerBuilder();
			
			foreach($this->komponents as $komponent)
			{
				$komponent->build($builder);
			}
			
			foreach($loader as $module)
			{
				$module->build($builder);
			}
			
			$this->build($builder);
			
			if($this->isInstrumentationEnabled())
			{
				$manager = $this->getManifest();
			}
			else
			{
				$manager = new ReflectionTypeInfoManager();
			}
			
			$compiler = new ContainerCompiler($manager, $containerTypeName);
			$code = $compiler->compile($builder, $proxyPath, $scopedProxies);
				
			Filesystem::writeFile($cacheFile, $code);
		}
		
		require_once $cacheFile;
		
		return new $containerTypeName($this->getContainerParams());
	}