code: public GooglePublicKeysManager refresh() throws GeneralSecurityException, IOException {
      lock.lock();
      try {
        publicKeys = new ArrayList<PublicKey>();
        // HTTP request to public endpoint
        CertificateFactory factory = SecurityUtils.getX509CertificateFactory();
        HttpResponse certsResponse = transport.createRequestFactory()
            .buildGetRequest(new GenericUrl(publicCertsEncodedUrl)).execute();
        expirationTimeMilliseconds =
            clock.currentTimeMillis() + getCacheTimeInSec(certsResponse.getHeaders()) * 1000;
        // parse each public key in the JSON response
        JsonParser parser = jsonFactory.createJsonParser(certsResponse.getContent());
        JsonToken currentToken = parser.getCurrentToken();
        // token is null at start, so get next token
        if (currentToken == null) {
          currentToken = parser.nextToken();
        }
        Preconditions.checkArgument(currentToken == JsonToken.START_OBJECT);
        try {
          while (parser.nextToken() != JsonToken.END_OBJECT) {
            parser.nextToken();
            String certValue = parser.getText();
            X509Certificate x509Cert = (X509Certificate) factory.generateCertificate(
                new ByteArrayInputStream(StringUtils.getBytesUtf8(certValue)));
            publicKeys.add(x509Cert.getPublicKey());
          }
          publicKeys = Collections.unmodifiableList(publicKeys);
        } finally {
          parser.close();
        }
        return this;
      } finally {
        lock.unlock();
      }
    }
docs: Forces a refresh of the public certificates downloaded from {@link #getPublicCertsEncodedUrl}.
  
  <p>
  This method is automatically called from {@link #getPublicKeys()} if the public keys have not
  yet been initialized or if the expiration time is very close, so normally this doesn't need to
  be called. Only call this method to explicitly force the public keys to be updated.
  </p>