public static function start(callable $readCache, callable $storeCache)
    {
        self::$annotations = $readCache();
        if (!is_array(self::$annotations)) {
            self::flush();
            throw new \RuntimeException('Cached annotation data is not an array');
        }

        self::$unserialized = [];
        self::$cacheChanged = false;
        self::$storeCache   = $storeCache;
        register_shutdown_function([__CLASS__, '__shutdown']);
    }