anchor.diff:    }
   
     DatabaseReference _root;
  +
  +  /// The root location of a DatabaseReference.
     DatabaseReference get root {
       if (_root != null) {
         _root.jsObject = jsObject.root;
  
positive.code:     return c.future;
    }
  
    Future update(values) => handleThenable(jsObject.update(jsify(values)));
  }
  
  
negative.code:     return _app;
    }
  
    /// Creates a new Database from [jsObject].
    Database.fromJsObject(database_interop.DatabaseJsImpl jsObject)
        : super.fromJsObject(jsObject);
  
    /// Disconnects from the server, all database operations will be
    /// completed offline.
    void goOffline() => jsObject.goOffline();
  
    /// Connects to the server and synchronizes the offline database
    /// state with the server state.
    void goOnline() => jsObject.goOnline();
  
    /// Returns a [DatabaseReference] to the root or provided [path].
    DatabaseReference ref([String path]) =>
        new DatabaseReference.fromJsObject(jsObject.ref(path));
  
    /// Returns a [DatabaseReference] from provided [url].
    /// Url must be in the same domain as the current database.
    DatabaseReference refFromURL(String url) =>
        new DatabaseReference.fromJsObject(jsObject.refFromURL(url));
  }
  
  /// A DatabaseReference represents a specific location in 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> {
    /// The last part of the current path. [null] in case of root DatabaseReference.
    String get key => jsObject.key;
  
    DatabaseReference _parent;
  
    /// The parent location of a DatabaseReference.
    DatabaseReference get parent {
      if (jsObject.parent != null) {
        if (_parent != null) {
  