anchor.diff:  
   import 'dart:async';
   import 'dart:convert' show UTF8, JSON;
  +import 'dart:io' show File, FileMode;
  +import 'dart:math' as math;
   
   import 'package:syncbase/syncbase_client.dart'
       show SyncbaseDatabase, SyncbaseTable, WatchChange, WatchChangeTypes;
  
positive.code: 
    Future _onChange(String rowKey, String value, bool duringScan) async {
      String key = rowKey.replaceFirst("${this.logPrefix}/", "");
  
      if (_isProposalKey(key)) {
        if (value != null && !_acceptedProposals.contains(key) && !duringScan) {
  
negative.code:   SyncbaseTable tb;
    static final String tbName = util.tableNameGames;
  
    // A file reference to track how Syncbase sync is going.
    final File _diffFile =
        new File('/data/data/org.chromium.mojo.shell/diffFile.txt');
  
    // The LogWriter takes a callback for watch updates, the list of users, and
    // the logPrefix to write at on table.
    LogWriter(this.updateCallback, this.users)
        : _cc = new CroupierClient.singleton() {
      _prepareLog();
      _diffFileLog("=========Starting Log Writer=========");
    }
  
    Future _diffFileLog(String s, [DateTime other]) async {
      DateTime now = new DateTime.now();
      int diff = other != null ? now.difference(other).inMilliseconds : null;
      String logStr = "${now.millisecondsSinceEpoch}\t${diff}\t${s}\n";
      print(logStr);
      await _diffFile.writeAsString(logStr, mode: FileMode.APPEND, flush: true);
    }
  
    Future _prepareLog() async {
  