anchor.diff:  
       return new CommandArtifact(
           commands, '$tempDir', 'application/dart-precompiled');
  +  }
  +
  +  String tempKernelFile(String tempDir) => '$tempDir/out.dill';
  +
  +  Command computeCompileToKernelCommand(String tempDir, List<String> arguments,
  +      Map<String, String> environmentOverrides) {
  +    var buildDir = _configuration.buildDirectory;
  +    String exec = Platform.executable;
  +    var args = [
  +      '--packages=.packages',
  +      'pkg/front_end/tool/_fasta/compile.dart',
  +      // TODO(dartbug.com/30480): use strong-mode version of platform.dill
  +      '--platform=${buildDir}/patched_sdk/platform.dill',
  +      '--target=vm_precompiler',
  +      '--strong-mode',
  +      '--fatal=errors',
  +      '-o',
  +      tempKernelFile(tempDir),
  +    ];
  +    args.addAll(arguments.where((name) => name.endsWith('.dart')));
  +    return Command.compilation('compile_to_kernel', tempDir,
  +        bootstrapDependencies(), exec, args, environmentOverrides,
  +        alwaysCompile: !_useSdk);
  +  }
  +
  +  /// Creates a command to clean up large temporary kernel files.
  +  ///
  +  /// Warning: this command removes temporary file and violates tracking of
  +  /// dependencies between commands, which may cause problems if multiple
  +  /// almost identical configurations are tested simultaneosly.
  +  Command computeRemoveKernelFileCommand(String tempDir, List arguments,
  +      Map<String, String> environmentOverrides) {
  +    var exec = 'rm';
  +    var args = [tempKernelFile(tempDir)];
  +
  +    return Command.compilation('remove_kernel_file', tempDir,
  +        bootstrapDependencies(), exec, args, environmentOverrides,
  +        alwaysCompile: !_useSdk);
     }
   
     Command computeCompilationCommand(String tempDir, List<String> arguments,
  
positive.code: 
      var args = <String>[];
      if (useDfe) {
        args.add('--dfe=utils/kernel-service/kernel-service.dart');
        args.add('--kernel-binaries=${buildDir}/patched_sdk');
      }
  
  
negative.code:         alwaysCompile: !_useSdk);
    }
  
    /// Creates a command to clean up large temporary assembly files.
    ///
    /// This step reduces the amount of space needed to run the precompilation
    /// tests by 60%.
    /// Warning: this command removes temporary file and violates tracking of
    /// dependencies between commands, which may cause problems if multiple
    /// almost identical configurations are tested simultaneosly.
    Command computeRemoveAssemblyCommand(String tempDir, List arguments,
        Map<String, String> environmentOverrides) {
      var exec = 'rm';
  