anchor.diff:      return c.future;
     }
   
  +  /// Updates data with [values] at actual database location.
     Future update(values) => handleThenable(jsObject.update(jsify(values)));
   }
   
  
positive.code:     return _app;
    }
  
    Database.fromJsObject(database_interop.DatabaseJsImpl jsObject)
        : super.fromJsObject(jsObject);
  
    void goOffline() => jsObject.goOffline();
  
    void goOnline() => jsObject.goOnline();
  
    DatabaseReference ref([String path]) =>
        new DatabaseReference.fromJsObject(jsObject.ref(path));
  
    DatabaseReference refFromURL(String url) =>
        new DatabaseReference.fromJsObject(jsObject.refFromURL(url));
  }
  
  /// A Reference represents a specific location in your database and
  /// can be used for reading or writing data to that database location.
  ///
  /// See: <https://firebase.google.com/docs/reference/js/firebase.database.Reference>.
  class DatabaseReference<T extends database_interop.ReferenceJsImpl>
      extends Query<T> {
    String get key => jsObject.key;
  
    DatabaseReference _parent;
    DatabaseReference get parent {
      if (jsObject.parent != null) {
        if (_parent != null) {
  
negative.code:     return _root;
    }
  
    /// Creates a new DatabaseReference from [jsObject].
    DatabaseReference.fromJsObject(T jsObject) : super.fromJsObject(jsObject);
  
    /// Returns child DatabaseReference from provided relative [path].
    DatabaseReference child(String path) =>
        new DatabaseReference.fromJsObject(jsObject.child(path));
  
    /// Returns [OnDisconnect] object.
    OnDisconnect onDisconnect() =>
        new OnDisconnect.fromJsObject(jsObject.onDisconnect());
  
    /// Pushes provided [value] to the actual location.
    /// If the [value] is not provided, no data is written to the database
    /// but the [ThenableReference] is still returned and can be used for later
    /// operation.
    ///
    ///     DatabaseReference ref = fb.database().ref("messages");
    ///     ThenableReference childRef = ref.push();
    ///     childRef.set({"text": "Hello"});
    ///
    /// This method returns [ThenableReference], [DatabaseReference]
    /// with [Future] property.
    ThenableReference push([value]) =>
        new ThenableReference.fromJsObject(jsObject.push(jsify(value)));
  
    /// Removes data from actual database location.
    Future remove() => handleThenable(jsObject.remove());
  
    /// Sets data at actual database location to provided [value].
    /// Overwrites any existing data at actual location and all child locations.
    Future set(value) => handleThenable(jsObject.set(jsify(value)));
  
    /// Sets a priority for data at actual database location.
    Future setPriority(priority) =>
        handleThenable(jsObject.setPriority(priority));
  
    /// Sets data [newVal] at actual database location with provided priority
    /// [newPriority].
    ///
    /// Like [set()] but also specifies the priority.
    Future setWithPriority(newVal, newPriority) =>
        handleThenable(jsObject.setWithPriority(jsify(newVal), newPriority));
  
    /// Atomically updates data at actual database location.
    ///
    /// This method is used to update the existing value to a new value,
    /// ensuring there are no conflicts with other clients writing to the same
    /// location at the same time.
    ///
    /// The provided [transactionUpdate] function is used to update
    /// the current value into a new value.
    ///
    ///     DatabaseReference ref = fb.database().ref("numbers");
    ///     ref.set(2);
    ///     ref.transaction((currentValue) => currentValue * 2);
    ///
    ///     var event = await ref.once("value");
    ///     print(event.snapshot.val()); //prints 4
    ///
    /// Set [applyLocally] to [false] to not see intermediate states.
    Future<Transaction> transaction(Func1 transactionUpdate,
        [bool applyLocally = true]) {
      Completer<Transaction> c = new Completer<Transaction>();
  