public static function createForSingleMonitor(array $monitorConfig) : Collection
 {
     return collect($monitorConfig['disks'])->map(function ($diskName) use($monitorConfig) {
         $backupDestination = BackupDestination::create($diskName, $monitorConfig['name']);
         return (new BackupDestinationStatus($backupDestination, $diskName))->setMaximumAgeOfNewestBackupInDays($monitorConfig['newestBackupsShouldNotBeOlderThanDays'])->setMaximumStorageUsageInMegabytes($monitorConfig['storageUsedMayNotBeHigherThanMegabytes']);
     });
 }
 public function isHealthy() : bool
 {
     if (!$this->backupDestination->isReachable()) {
         return false;
     }
     if ($this->usesTooMuchStorage()) {
         return false;
     }
     if ($this->newestBackupIsTooOld()) {
         return false;
     }
     return true;
 }
 public static function createFromArray(array $config) : Collection
 {
     return collect($config['destination']['disks'])->map(function ($filesystemName) use($config) {
         return BackupDestination::create($filesystemName, $config['name']);
     });
 }