anchor.diff:    @override
     String stampName = 'ios-usb';
   }
  -class MockCache extends Mock implements Cache {}
  +
  +class FakeSecondaryCache extends Fake implements Cache {
  +  Directory downloadDir;
  +  Directory artifactDirectory;
  +  String version;
  +  void Function(String artifactName, String version) onSetStamp;
  +
  +  @override
  +  String get storageBaseUrl => 'https://storage.googleapis.com';
  +
  +  @override
  +  Directory getDownloadDir() => artifactDirectory;
  +
  +  @override
  +  Directory getArtifactDirectory(String name) => artifactDirectory;
  +
  +  @override
  +  Directory getCacheDir(String name) {
  +    return artifactDirectory.childDirectory(name);
  +  }
  +
  +  @override
  +  File getLicenseFile() {
  +    return artifactDirectory.childFile('LICENSE');
  +  }
  +
  +  @override
  +  String getVersionFor(String artifactName) => version;
  +
  +  @override
  +  void setStampFor(String artifactName, String version) {
  +    onSetStamp(artifactName, version);
  +  }
  +}
   
   class FakeVersionedPackageResolver extends Fake implements VersionedPackageResolver {
     final List<List<String>> resolved = <List<String>>[];
  
positive.code: 
    testWithoutContext('EngineCachedArtifact makes binary dirs readable and executable by all', () async {
      final FakeOperatingSystemUtils operatingSystemUtils = FakeOperatingSystemUtils();
      final MockCache cache = MockCache();
      final FileSystem fileSystem = MemoryFileSystem.test();
      final Directory artifactDir = fileSystem.systemTempDirectory.createTempSync('flutter_cache_test_artifact.');
      final Directory downloadDir = fileSystem.systemTempDirectory.createTempSync('flutter_cache_test_download.');
  
      when(cache.getArtifactDirectory(any)).thenReturn(artifactDir);
      when(cache.getDownloadDir()).thenReturn(downloadDir);
      artifactDir.childDirectory('bin_dir').createSync();
      artifactDir.childFile('unused_url_path').createSync();
  
  
negative.code: 
    testWithoutContext('EngineCachedArtifact removes unzipped FlutterMacOS.framework before replacing', () async {
      final OperatingSystemUtils operatingSystemUtils = FakeOperatingSystemUtils();
      final FileSystem fileSystem = MemoryFileSystem.test();
      final Directory artifactDir = fileSystem.systemTempDirectory.createTempSync('flutter_cache_test_artifact.');
      final Directory downloadDir = fileSystem.systemTempDirectory.createTempSync('flutter_cache_test_download.');
      final FakeSecondaryCache cache = FakeSecondaryCache()
        ..artifactDirectory = artifactDir
        ..downloadDir = downloadDir;
  
      final Directory binDir = artifactDir.childDirectory('bin_dir')..createSync();
      binDir.childFile('FlutterMacOS.framework.zip').createSync();
      final Directory unzippedFramework = binDir.childDirectory('FlutterMacOS.framework');
  