code: function getter() {
  
        // not found
        var cached = internalCache[filename];
        if (!cached) {
          return undefined;
        }
        // we have already tested whether the cached value is valid and deleted it if not
        else if (isTestedCache[filename]) {
          return cached.output;
        }
        // test the input
        else {
          var isMatch = cached.input && fs.existsSync(filename) &&
            (cached.input === fs.readFileSync(filename).toString());
          isTestedCache[filename] = true;
          internalCache[filename] = isMatch && cached;
          return getter();
        }
      }
docs: create a getter we need to use a getter as it is the only hook at which we can perform comparison the value is accessed multiple times each compile cycle but is only set at the end of the cycle getters will persist for the life of the internal cache so the test cache also needs to persist