anchor.diff:    
   }
   
  -void _complete(completer, object, key) {
  +void _complete(Completer completer, object, key) {
     if (key != null) {      
       completer.complete(new _KeyValuePair(key,object)); // complete, because we can't reflect any deeper
     }
  
positive.code: Future objectToSerializable(Object object, [key=null]) {
    var completer = new Completer();
      
    if (object is num || 
        object is bool || 
        object is String || 
        object == null) {
      _serializeNative(object, completer, key);
    }
    else if (object is Map) {
  
negative.code:     classMirror.variables.forEach((varKey, variable) {
        if (!variable.isPrivate && !variable.isStatic) {
          var futureField = instanceMirror.getField(varKey);
  
          var onGetFutureFieldError = (error) => completer.completeError(error);
  
          var onGetFutureFieldSuccess = (mirrors.InstanceMirror instanceMirrorField) {
            Object reflectee = instanceMirrorField.reflectee;
            _log("Got reflectee for $varKey: ${reflectee}");
            if (isPrimative(reflectee)){
              resultMap[varKey] = reflectee;
            } else {
              Future<String> recursed = objectToJson(reflectee).catchError(onGetFutureFieldError);
              recursed.then((json) => resultMap[varKey] = json);
              futuresList.add(recursed);
            }
          };
          
          futureField.then(onGetFutureFieldSuccess, onError:onGetFutureFieldError);
          futuresList.add(futureField);
  