code: public @Nullable CheckResponse check(CheckRequest req) {
      if (cache == null) {
        return null;
      }
      Preconditions.checkArgument(req.getServiceName().equals(serviceName), "service name mismatch");
      Preconditions.checkNotNull(req.getOperation(), "expected check operation was not present");
      if (req.getOperation().getImportance() != Importance.LOW) {
        return null; // send the request now if importance is not LOW
      }
      String signature = sign(req).toString();
      CachedItem item = cache.getIfPresent(signature);
      if (item == null) {
        return null; // signal caller to send the response
      } else {
        return handleCachedResponse(req, item);
      }
    }
docs: Determine if a cached response corresponds to {@code req}.
  
  Determine if there are cache hits for the request in this instance as follows:
  
  <strong>Not in the Cache</strong> If {@code req} is not in the cache, it returns {@code null},
  to indicate that the caller should send the request.
  
  <strong>Cache Hit, the response has errors</strong> When a cached response has errors, it's
  assumed that {@code req}, would fail as well, so the cached response is returned. However, the
  first request after the check interval has elapsed should be sent to the server to refresh the
  response - until its response is received, the subsequent reqs should still return the failed
  response.
  
  <strong>Cache Hit, the response passed</strong> When the cached response has no errors, it's
  assumed that the {@code req} would pass as well, so the response is return, with quota tracking
  updated so that it matches that in req.
  
  @param req a request to be sent to the service control service
  @return a {@code CheckResponse} if an applicable one is cached by this instance, otherwise
  {@code null}