class CasProxyReceptor extends IndirectClient {

    /** Constant <code>PARAM_PROXY_GRANTING_TICKET_IOU="pgtIou"</code> */
    public static final String PARAM_PROXY_GRANTING_TICKET_IOU = "pgtIou";

    /** Constant <code>PARAM_PROXY_GRANTING_TICKET="pgtId"</code> */
    public static final String PARAM_PROXY_GRANTING_TICKET = "pgtId";

    private Store<String, String> store = new GuavaStore<>(1000, 1, TimeUnit.MINUTES);

    /** {@inheritDoc} */
    @Override
    protected void internalInit(final boolean forceReinit) {<FILL_FUNCTION_BODY>}
}

        assertNotNull("store", this.store);

        setRedirectionActionBuilderIfUndefined(ctx
            -> { throw new TechnicalException("Not supported by the CAS proxy receptor"); });
        setCredentialsExtractorIfUndefined(ctx -> {
            val webContext = ctx.webContext();
            // like CommonUtils.readAndRespondToProxyReceptorRequest in CAS client
            val proxyGrantingTicketIou = webContext.getRequestParameter(PARAM_PROXY_GRANTING_TICKET_IOU);
            logger.debug("proxyGrantingTicketIou: {}", proxyGrantingTicketIou);
            val proxyGrantingTicket = webContext.getRequestParameter(PARAM_PROXY_GRANTING_TICKET);
            logger.debug("proxyGrantingTicket: {}", proxyGrantingTicket);

            if (proxyGrantingTicket.isEmpty() || proxyGrantingTicketIou.isEmpty()) {
                logger.warn("Missing proxyGrantingTicket or proxyGrantingTicketIou -> returns ok");
                throw new OkAction(Pac4jConstants.EMPTY_STRING);
            }

            this.store.set(proxyGrantingTicketIou.get(), proxyGrantingTicket.get());

            logger.debug("Found pgtIou and pgtId for CAS proxy receptor -> returns ok");
            throw new OkAction("<?xml version=\"1.0\"?>\n<casClient:proxySuccess xmlns:casClient=\"http://www.yale.edu/tp/casClient\" />");
        });
        setAuthenticatorIfUndefined((ctx, credentials)
            -> { throw new TechnicalException("Not supported by the CAS proxy receptor"); });
    
<methods>public non-sealed void <init>() ,public java.lang.String computeFinalCallbackUrl(org.pac4j.core.context.WebContext) ,public java.lang.String getCodeVerifierSessionAttributeName() ,public final Optional<org.pac4j.core.exception.http.RedirectionAction> getLogoutAction(CallContext, org.pac4j.core.profile.UserProfile, java.lang.String) ,public java.lang.String getNonceSessionAttributeName() ,public final Optional<org.pac4j.core.exception.http.RedirectionAction> getRedirectionAction(CallContext) ,public java.lang.String getStateSessionAttributeName() ,public org.pac4j.core.exception.http.HttpAction processLogout(CallContext, org.pac4j.core.credentials.Credentials) <variables>public static final java.lang.String ATTEMPTED_AUTHENTICATION_SUFFIX,private static final java.lang.String CODE_VERIFIER_SESSION_PARAMETER,private static final java.lang.String NONCE_SESSION_PARAMETER,private static final java.lang.String STATE_SESSION_PARAMETER,private org.pac4j.core.http.ajax.AjaxRequestResolver ajaxRequestResolver,protected java.lang.String callbackUrl,protected org.pac4j.core.http.callback.CallbackUrlResolver callbackUrlResolver,private boolean checkAuthenticationAttempt,private org.pac4j.core.logout.LogoutActionBuilder logoutActionBuilder,private org.pac4j.core.logout.processor.LogoutProcessor logoutProcessor,private org.pac4j.core.redirect.RedirectionActionBuilder redirectionActionBuilder,protected org.pac4j.core.http.url.UrlResolver urlResolver