src/vs/workbench/services/workingCopy/common/workingCopyBackupService.ts/WorkingCopyBackupServiceImpl/doInitialize
class WorkingCopyBackupServiceImpl:	private async doInitialize(): Promise<WorkingCopyBackupsModel> {

		// Create backup model
		this.model = await WorkingCopyBackupsModel.create(this.backupWorkspaceHome, this.fileService);

		// Migrate hashes as needed. We used to hash with a MD5
		// sum of the path but switched to our own simpler hash
		// to avoid a node.js dependency. We still want to
		// support the older hash to prevent dataloss, so we:
		// - iterate over all backups
		// - detect if the file name length is 32 (MD5 length)
		// - read the backup's target file path
		// - rename the backup to the new hash
		// - update the backup in our model
		for (const backupResource of this.model.get()) {
			if (basename(backupResource).length !== 32) {
				continue; // not a MD5 hash, already uses new hash function
			}

			try {
				const identifier = await this.resolveIdentifier(backupResource, this.model);
				if (!identifier) {
					this.logService.warn(`Backup: Unable to read target URI of backup ${backupResource} for migration to new hash.`);
					continue;
				}

				const expectedBackupResource = this.toBackupResource(identifier);
				if (!isEqual(expectedBackupResource, backupResource)) {
					await this.fileService.move(backupResource, expectedBackupResource, true);
					this.model.move(backupResource, expectedBackupResource);
				}
			} catch (error) {
				this.logService.error(`Backup: Unable to migrate backup ${backupResource} to new hash.`);
			}
		}

		return this.model;
	}