class DirectKerberosClient extends DirectClient {

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

    /**
     * <p>Constructor for DirectKerberosClient.</p>
     *
     * @param authenticator a {@link Authenticator} object
     */
    public DirectKerberosClient(final Authenticator authenticator) {
        setAuthenticator(authenticator);
    }

    /**
     * <p>Constructor for DirectKerberosClient.</p>
     *
     * @param authenticator a {@link Authenticator} object
     * @param profileCreator a {@link ProfileCreator} object
     */
    public DirectKerberosClient(final Authenticator authenticator, final ProfileCreator profileCreator) {
        setAuthenticator(authenticator);
        setProfileCreator(profileCreator);
    }

    /** {@inheritDoc} */
    @Override
    protected void internalInit(final boolean forceReinit) {
        setCredentialsExtractorIfUndefined(new KerberosExtractor());
    }

    /** {@inheritDoc} */
    @Override
    public Optional<Credentials> getCredentials(final CallContext ctx) {<FILL_FUNCTION_BODY>}
}

        // Set the WWW-Authenticate: Negotiate header in case no credentials are found
        // to trigger the SPNEGO process by replying with 401 Unauthorized
        ctx.webContext().setResponseHeader(HttpConstants.AUTHENTICATE_HEADER, "Negotiate");
        return super.getCredentials(ctx);
    
<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>