_checkManifest(label, type, manifest) {
    let cachedManifest = this._readManifest(label, type);

    if (cachedManifest === null) {
      return false;
    }

    let parsedCached = JSON.parse(cachedManifest);
    let parsedNew = JSON.parse(manifest);

    // Only inspect the keys we care about.
    // Invalidate the cache based off the private _packageCache key as well.
    let keys = [].concat(DEPENDENCY_KEYS, '_packageCache');

    let key, before, after;
    for (let i = 0; i < keys.length; i++) {
      key = keys[i];

      // Empty keys are identical to undefined keys.
      before = stableStringify(parsedCached[key]) || '{}';
      after = stableStringify(parsedNew[key]) || '{}';

      if (before !== after) {
        return false;
      }
    }

    return true;
  }
The `_checkManifest` method compares the desired manifest to that which
exists in the cache.

@private
@method _checkManifest
@param {String} label The label for the cache.
@param {String} type The type of package cache.
@param {String} manifest The contents of the manifest file to compare to cache.
@return {Boolean} `true` if identical.