anchor.diff:  }
   
   /**
  - * Run dart2dart on non web_ui web projects. 
  + * Run dart2dart on non web_ui web projects.
    */
   Future<bool> dart2dart(ctx) {
     ctx.info("executing dart2dart");
  
positive.code: 
    return completer.future;
  }
      
  /**
   * Build the pages branch and push to github. 
   */    
  buildPages(ctx) {
    ctx.info("executing buildPages");
    var completer = new Completer();
  
    web_ui.build(webUIArgs, webUIFiles).then(
        (result) {
  
          ctx.info("==========================================");
          ctx.info("result = ${result}");
          ctx.info("web_ui.build done");
          ctx.info("==========================================");
  
          startProcess(ctx, 'rsync', ['-RLrk',
                                      '--include=*/',
                                      '--include=packages/browser/dart.js',
                                      '--exclude=packages/***',
                                      '--verbose',
                                      'web', deployFolderName]).then((rsync_result) {
  
            ctx.info("==========================================");
            ctx.info("result = ${rsync_result}");
            ctx.info("rsync done");
            ctx.info("==========================================");
  
            dart2js(ctx).then((dart2js_result) {
  
              ctx.info("==========================================");
              ctx.info("result = ${dart2js_result}");
              ctx.info("dart2js done");
              ctx.info("==========================================");
  
              dart2dart(ctx).then((dart2dart_result) {
  
                ctx.info("==========================================");
                ctx.info("result = ${dart2dart_result}");
                ctx.info("dart2dart done");
                ctx.info("==========================================");
  
                var filesToProcess = new List();
                result.forEach((o) => filesToProcess.addAll(o.outputs.keys.where((f) => f.endsWith("_bootstrap.dart"))));
                
                dart2WebUI(ctx, filesToProcess).then((dart2WebUI_results) {
  
                  ctx.info("==========================================");
                  ctx.info("result = ${dart2WebUI_results}");
                  ctx.info("dart2WebUI done");
                  ctx.info("=========================================="); 
                                   
                  writeIndexFile();
  
                  gitBranchPagesDelete(ctx).then((r) {
  
                    ctx.info("==========================================");
                    ctx.info("result = ${r}");
                    ctx.info("gitBranchPagesDelete done");
                    ctx.info("=========================================="); 
  
                    gitBranchPagesCreate(ctx).then((r) {
  
                      ctx.info("==========================================");
                      ctx.info("result = ${r}");
                      ctx.info("gitBranchPagesCreate done");
                      ctx.info("=========================================="); 
  
                      gitBranchPagesCheckout(ctx).then((r) {
  
                        ctx.info("==========================================");
                        ctx.info("result = ${r}");
                        ctx.info("gitBranchPagesCheckout done");
                        ctx.info("=========================================="); 
  
                        gitBranchPagesDeleteFilesGit(ctx).then((r) {
  
                          ctx.info("==========================================");
                          ctx.info("result = ${r}");
                          ctx.info("gitBranchPagesDeleteFilesGit done");
                          ctx.info("=========================================="); 
  
                          gitBranchPagesDeleteFiles(ctx).then((r) {
  
                            ctx.info("==========================================");
                            ctx.info("result = ${r}");
                            ctx.info("gitBranchPagesDeleteFiles done");
                            ctx.info("=========================================="); 
  
                            gitBranchPagesCopyFiles(ctx).then((r) {
  
                              ctx.info("==========================================");
                              ctx.info("result = ${r}");
                              ctx.info("gitBranchPagesCopyFiles done");
                              ctx.info("=========================================="); 
  
                              gitBranchPagesAddFiles(ctx).then((r) {
  
                                ctx.info("==========================================");
                                ctx.info("result = ${r}");
                                ctx.info("gitBranchPagesAddFiles done");
                                ctx.info("=========================================="); 
  
                                gitBranchPagesCommitFiles(ctx).then((r) {
  
                                  ctx.info("==========================================");
                                  ctx.info("result = ${r}");
                                  ctx.info("gitBranchPagesCommitFiles done");
                                  ctx.info("=========================================="); 
  
                                  gitBranchPagesPushFiles(ctx).then((r) {
  
                                    ctx.info("==========================================");
                                    ctx.info("result = ${r}");
                                    ctx.info("gitBranchPagesPushFiles done");
                                    ctx.info("=========================================="); 
  
                                    gitBranchPagesCheckoutMainBranch(ctx).then((r) {
  
                                      ctx.info("==========================================");
                                      ctx.info("result = ${r}");
                                      ctx.info("gitBranchPagesCheckoutMainBranch done");
                                      ctx.info("=========================================="); 
  
                                      gitBranchPagesResetHard(ctx).then((r) {
  
                                        ctx.info("==========================================");
                                        ctx.info("result = ${r}");
                                        ctx.info("gitBranchPagesResetHard done");
                                        ctx.info("=========================================="); 
  
                                        gitBranchPagesPubUpdate(ctx).then((r) {
  
                                          ctx.info("==========================================");
                                          ctx.info("result = ${r}");
                                          ctx.info("gitBranchPagesPubUpdate done");
                                          ctx.info("=========================================="); 
  
                                          completer.complete(true);
                                        });
                                      });
                                    });
                                  });
                                });
                              });
                            });
                          });
                        });
                      });
                    });
                  });                  
                });
              });
            });
          });
        });
  
    return completer.future;
  }
  
  void main() {
  
negative.code: Future gitBranchPagesPubUpdate(ctx) => startProcess(ctx, 'pub', ['update']);
  
  /**
   * Build a list of urls to the sample files.
   */
  List<String> buildWebUrls() {
    var urls = new List<String>();
  