anchor.diff:  import 'dart:async';
   import 'dart:core';
   import 'dart:js';
  +import 'dart:typed_data';
   
   import 'package:chrome_gen/chrome_app.dart' as chrome;
   
  
positive.code:   }
  
    /**
     * Reads a given [blob] as text.
     */
    static Future<String> readBlob(chrome.Blob blob, String type) {
      Completer completer = new Completer();
      var reader = new JsObject(context['FileReader']);
      reader['onload'] = (var event) {
  
negative.code:  **/
  abstract class FileOps {
  
    static Future<chrome.DirectoryEntry> createDirectoryRecursive(
        chrome.DirectoryEntry dir, String path) {
      List<String> pathParts = path.split("/");
      int i = 0;
      return dir.createDirectory(pathParts[i]).then((chrome.DirectoryEntry dir) {
        i++;
        if (i == pathParts.length) return dir;
        return dir.createDirectory(pathParts[i]);
      });
    }
  
    static Future<chrome.Entry> createFileWithContent(
        chrome.DirectoryEntry root, String path, content, String type) {
  
      createFile(chrome.DirectoryEntry dir, String fileName) {
        return dir.createFile(fileName).then((chrome.ChromeFileEntry entry) {
          if (type == 'Text') {
            return entry.writeText(content).then((_) => entry);
          } else if (type == 'blob') {
            if (content is Uint8List) {
              content = new chrome.ArrayBuffer.fromBytes(content.toList());
            }
            return entry.writeBytes(content).then((_) => entry);
          } else {
            throw new UnsupportedError(
                "Writing of content type:${type} is not supported.");
          }
        });
      }
  
      if (path[0] == '/') path = path.substring(1);
      List<String> pathParts = path.split('/');
      if (pathParts.length != 1) {
        return createDirectoryRecursive(root, path.substring(0,
            path.lastIndexOf('/'))).then((dir) {
          return createFile(dir, pathParts[pathParts.length - 1]);
        });
      } else {
        return createFile(root, path);
      }
    }
  
    static Future<dynamic> readFile(chrome.DirectoryEntry root, String path,
  