class DirectCasProxyClient extends DirectClient {

    private CasConfiguration configuration;

    private UrlResolver urlResolver = new DefaultUrlResolver();

    private CallbackUrlResolver callbackUrlResolver = new NoParameterCallbackUrlResolver();

    private String serviceUrl;

    /**
     * <p>Constructor for DirectCasProxyClient.</p>
     */
    public DirectCasProxyClient() { }

    /**
     * <p>Constructor for DirectCasProxyClient.</p>
     *
     * @param casConfiguration a {@link CasConfiguration} object
     * @param serviceUrl a {@link String} object
     */
    public DirectCasProxyClient(final CasConfiguration casConfiguration, final String serviceUrl) {
        this.configuration = casConfiguration;
        this.serviceUrl = serviceUrl;
    }

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

        assertNotBlank("serviceUrl", this.serviceUrl);
        assertNotNull("configuration", this.configuration);
        // must be a CAS proxy protocol
        val protocol = configuration.getProtocol();
        assertTrue(protocol == CasProtocol.CAS20_PROXY || protocol == CasProtocol.CAS30_PROXY,
            "The DirectCasProxyClient must be configured with a CAS proxy protocol (CAS20_PROXY or CAS30_PROXY)");

        setCredentialsExtractorIfUndefined(new ParameterExtractor(CasConfiguration.TICKET_PARAMETER, true, false));
        setAuthenticatorIfUndefined(new CasAuthenticator(configuration, getName(), urlResolver, callbackUrlResolver, this.serviceUrl,
            findSessionLogoutHandler()));
        addAuthorizationGenerator(new DefaultCasAuthorizationGenerator());
    
<methods>public non-sealed void <init>() ,public final Optional<org.pac4j.core.exception.http.RedirectionAction> getLogoutAction(CallContext, org.pac4j.core.profile.UserProfile, java.lang.String) ,public final Optional<org.pac4j.core.exception.http.RedirectionAction> getRedirectionAction(CallContext) ,public final org.pac4j.core.exception.http.HttpAction processLogout(CallContext, org.pac4j.core.credentials.Credentials) <variables>