protected function saveProductionData()
    {
        $this->reflectionDataRuntimeCache->flush();

        $classNames = [];
        foreach ($this->classReflectionData as $className => $reflectionData) {
            $classNames[$className] = true;
            $cacheIdentifier = $this->produceCacheIdentifierFromClassName($className);
            $this->reflectionDataRuntimeCache->set($cacheIdentifier, $reflectionData);
            if (isset($this->classSchemata[$className])) {
                $this->classSchemataRuntimeCache->set($cacheIdentifier, $this->classSchemata[$className]);
            }
        }
        $this->reflectionDataRuntimeCache->set('__classNames', $classNames);
        $this->reflectionDataRuntimeCache->set('__annotatedClasses', $this->annotatedClasses);

        $this->reflectionDataRuntimeCache->getBackend()->freeze();
        $this->classSchemataRuntimeCache->getBackend()->freeze();

        $this->log(sprintf('Built and froze reflection runtime caches (%s classes).', count($this->classReflectionData)), LogLevel::INFO);
    }