anchor.diff:    copyDirectory(
         joinDir(Directory.current, ['packages']),
         joinDir(Directory.current, ['app', 'packages']));
  -
  +}
  +
  +void prepareBuild(GrinderContext context) {
  +  context.log('prepare build');
     // Copy files to build directory.
     copyFile(
         joinFile(Directory.current, ['pubspec.yaml']),
  
positive.code: }
  
  Future compile(GrinderContext context) {
    Directory.current = 'build';
    return Future.wait([asyncPolymerBuild('web/spark.html',
                                          'polymer-build').then((bool success) {
      Directory.current = 'polymer-build';
      dart2JSBuild(context);
  
negative.code:   copyDirectory(
        joinDir(Directory.current, ['packages']),
        joinDir(Directory.current, ['build', 'packages']));
    runCommandSync(context, 'rm -rf build/web/packages');
  }
  
  // It will output a file web/spark.html_bootstrap.dart and a spark.html
  // without HTML imports.
  Future<bool> asyncPolymerBuild(GrinderContext context,
                                 String entryPoint,
                                 String outputDir) {
    var args = ['--out', outputDir, '--deploy'];
    var options = polymer.parseOptions(args);
    return polymer.build(entryPoints: [entryPoint], options: options)
  