code: @FFDCIgnore({ IDTokenValidationFailedException.class })
      @Override
      public boolean verify(long clockSkew, Object key)
              throws IDTokenValidationFailedException {
          boolean verified = false;
          try {
              if (super.verify(clockSkew, key)) {
                  payload.putAll(super.getPayload());
                  addToPayload();
                  // verify accesstoken hash if it exists
                  if (payload.getAccessTokenHash() != null) {
                      String athash = payload.getAccessTokenHash();
                      if (this.ath == null) {
                          // internal error
                          Tr.error(tc, "OIDC_IDTOKEN_VERIFY_ATHASH_ERR", new Object[] { getClientId(), this.ath, athash });
                          throw IDTokenValidationFailedException.format("OIDC_IDTOKEN_VERIFY_ATHASH_ERR", getClientId(), this.ath, athash);
                      }
                      if (verifyAccessTokenHash(athash)) {
                          verified = true;
                      } else {
                          Tr.error(tc, "OIDC_IDTOKEN_VERIFY_ATHASH_ERR", new Object[] { getClientId(), this.ath, athash });
                          throw IDTokenValidationFailedException.format("OIDC_IDTOKEN_VERIFY_ATHASH_ERR", getClientId(), this.ath, athash);
                      }
                  } else {
                      verified = true;
                  }
              }
          } catch (IDTokenValidationFailedException e) {
              // Tr.error has been handled
              throw e;
          }
          return verified;
      }
docs: Verify idtoken.
  
  @throws Exception