update (node, path, newValue, oldValue) {
    if (!this.select(node) || path[1] !== this._property) return
    let values = oldValue
    if (!isArray(values)) {
      values = [values]
    }
    values.forEach(value => {
      this.index.delete([value, node.id])
    })
    values = newValue
    if (!isArray(values)) {
      values = [values]
    }
    values.forEach(value => {
      this.index.set([value, node.id], node)
    })
  }
Called when a property has been updated.

    Override this in subclasses for customization.

    @private
    @param {Node} node