public function buildEssentialsSequence(string $identifier): Sequence
    {
        $sequence = new Sequence($identifier);

        if ($this->context->isProduction()) {
            $lockManager = new LockManager();
            $lockManager->exitIfSiteLocked();
            if ($identifier === 'compiletime') {
                $lockManager->lockSiteOrExit();
                // make sure the site is unlocked even if the script ends unexpectedly due to an error/exception
                register_shutdown_function([$lockManager, 'unlockSite']);
            }
            $this->setEarlyInstance(LockManager::class, $lockManager);
        }

        $sequence->addStep(new Step('neos.flow:annotationregistry', [Scripts::class, 'registerClassLoaderInAnnotationRegistry']));
        $sequence->addStep(new Step('neos.flow:configuration', [Scripts::class, 'initializeConfiguration']), 'neos.flow:annotationregistry');
        $sequence->addStep(new Step('neos.flow:systemlogger', [Scripts::class, 'initializeSystemLogger']), 'neos.flow:configuration');

        $sequence->addStep(new Step('neos.flow:errorhandling', [Scripts::class, 'initializeErrorHandling']), 'neos.flow:systemlogger');
        $sequence->addStep(new Step('neos.flow:cachemanagement', [Scripts::class, 'initializeCacheManagement']), 'neos.flow:systemlogger');
        return $sequence;
    }