anchor.diff:      if (engineDir.existsSync())
         engineDir.deleteSync(recursive: true);
   
  -    for (String dirName in _getEngineDirs()) {
  -      Directory dir = fs.directory(path.join(engineDir.path, dirName));
  -      await _downloadItem('Downloading engine artifacts $dirName...',
  -        url + dirName + '/artifacts.zip', dir);
  +    for (List<String> toolsDir in _getBinaryDirs()) {
  +      String cacheDir = toolsDir[0];
  +      String urlPath = toolsDir[1];
  +      Directory dir = fs.directory(path.join(engineDir.path, cacheDir));
  +      await _downloadItem('Downloading $cacheDir tools...', url + urlPath, dir);
  +
  +      _makeFilesExecutable(dir);
  +
         File frameworkZip = fs.file(path.join(dir.path, 'Flutter.framework.zip'));
         if (frameworkZip.existsSync()) {
           Directory framework = fs.directory(path.join(dir.path, 'Flutter.framework'));
           framework.createSync();
           os.unzip(frameworkZip, framework);
         }
  -    }
  -
  -    for (List<String> toolsDir in _getToolsDirs()) {
  -      String cacheDir = toolsDir[0];
  -      String urlPath = toolsDir[1];
  -      Directory dir = fs.directory(path.join(engineDir.path, cacheDir));
  -      await _downloadItem('Downloading $cacheDir tools...', url + urlPath, dir);
  -      _makeFilesExecutable(dir);
       }
   
       cache.setStampFor(kName, cache.getVersionFor(kName));
  
positive.code: 
    List<String> _getPackageDirs() => const <String>[kSkyEngine];
  
    List<String> _getEngineDirs() {
      List<String> dirs = <String>[
        'android-arm',
        'android-arm-profile',
        'android-arm-release',
        'android-x64',
        'android-x86',
      ];
  
      if (cache.includeAllPlatforms)
        dirs.addAll(<String>['ios', 'ios-profile', 'ios-release', 'linux-x64']);
      else if (platform.isMacOS)
        dirs.addAll(<String>['ios', 'ios-profile', 'ios-release']);
      else if (platform.isLinux)
        dirs.add('linux-x64');
  
      return dirs;
    }
  
    // Return a list of (cache directory path, download URL path) tuples.
    List<List<String>> _getToolsDirs() {
      if (cache.includeAllPlatforms)
        return <List<String>>[]
          ..addAll(_osxToolsDirs)
          ..addAll(_linuxToolsDirs);
      else if (platform.isMacOS)
        return _osxToolsDirs;
      else if (platform.isLinux)
        return _linuxToolsDirs;
      else
        return <List<String>>[];
    }
  
    List<List<String>> get _osxToolsDirs => <List<String>>[
      <String>['darwin-x64', 'darwin-x64/artifacts.zip'],
      <String>['android-arm-profile/darwin-x64', 'android-arm-profile/darwin-x64.zip'],
      <String>['android-arm-release/darwin-x64', 'android-arm-release/darwin-x64.zip'],
    ];
  
    List<List<String>> get _linuxToolsDirs => <List<String>>[
      <String>['linux-x64', 'linux-x64/artifacts.zip'],
      <String>['android-arm-profile/linux-x64', 'android-arm-profile/linux-x64.zip'],
      <String>['android-arm-release/linux-x64', 'android-arm-release/linux-x64.zip'],
    ];
  
    bool isUpToDate() {
  
negative.code:       return false;
  
      Directory engineDir = cache.getArtifactDirectory(kName);
      for (List<String> toolsDir in _getBinaryDirs()) {
        Directory dir = fs.directory(path.join(engineDir.path, toolsDir[0]));
        if (!dir.existsSync())
          return false;
  