anchor.diff:  
     PlatformInfo._(this.os, this.arch, this.naclArch);
   
  +  PlatformInfo.fromMap(Map m) : this._(m['os'], m['arch'], m['nacl_arch']);
  +
     String toString() => "${os}, ${arch}, ${naclArch}";
   
     bool get isCros => os == 'cros';
  
positive.code:   Future applicationStarting(Application application) {
      // get platform info
      return chrome.runtime.getPlatformInfo().then((Map m) {
        spark._platformInfo = new PlatformInfo._(m['os'], m['arch'], m['nacl_arch']);
        return spark.workspace.restore().then((value) {
          if (spark.workspace.getFiles().length == 0) {
            // No files, just focus the editor.
  
negative.code:   ResourceRefreshAction(Spark spark) : super(
        spark, "resource-refresh", "Refresh") {
      // On Chrome OS, bind to the dedicated refresh key.
      chrome.runtime.getPlatformInfo().then((Map m) {
        if (new PlatformInfo.fromMap(m).isCros) {
          addBinding('f5', linuxBinding: 'f3');
        } else {
          addBinding('f5');
        }
      });
    }
  
    void _invoke([context]) {
  