code: public final List<PublicKey> getPublicKeys() throws GeneralSecurityException, IOException {
      lock.lock();
      try {
        if (publicKeys == null
            || clock.currentTimeMillis() + REFRESH_SKEW_MILLIS > expirationTimeMilliseconds) {
          refresh();
        }
        return publicKeys;
      } finally {
        lock.unlock();
      }
    }
docs: Returns an unmodifiable view of the public keys.
  
  <p>
  For efficiency, an in-memory cache of the public keys is used here. If this method is called
  for the first time, or the certificates have expired since last time it has been called (or are
  within 5 minutes of expiring), {@link #refresh()} will be called before returning the value.
  </p>