docs: function (key, revalidate, callback) {
        var nodes = this.chains[key];
        if (nodes === undefined || nodes.length === 0) {
          return;
        }
  
        var affected = undefined;
  
        if (callback) {
          affected = [];
        }
  
        for (var i = 0, l = nodes.length; i < l; i++) {
          nodes[i].notify(revalidate, affected);
        }
  
        if (callback === undefined) {
          return;
        }
  
        // we gather callbacks so we don't notify them during revalidation
        for (var i = 0, l = affected.length; i < l; i += 2) {
          var obj = affected[i];
          var path = affected[i + 1];
          callback(obj, path);
        }
      }