protected function registerFlysystems(Container $app)
    {
        $app['flysystem.filesystems'] = [];
        $app['flysystem.plugins'] = [
            new EmptyDir(),
            new GetWithMetadata(),
            new ListFiles(),
            new ListPaths(),
            new ListWith(),
        ];
        $app['flysystems'] = function (Container $app) {
            $flysystems = new Container();
            foreach ($app['flysystem.filesystems'] as $alias => $parameters) {
                $flysystems[$alias] = $this->buildFilesystem($app, $parameters);
            }
            return $flysystems;
        };

        $app['flysystem.mount_manager'] = function (Container $app) {
            $mountManager = new MountManager();
            foreach ($app['flysystem.filesystems'] as $alias => $parameters) {
                $mountManager->mountFilesystem($alias, $app['flysystems'][$alias]);
            }
            return $mountManager;
        };
    }