class DirectClient extends BaseClient {

    /** {@inheritDoc} */
    @Override
    protected void beforeInternalInit(final boolean forceReinit) {
        if (saveProfileInSession == null) {
            saveProfileInSession = false;
        }
    }

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

    /** {@inheritDoc} */
    @Override
    public final Optional<RedirectionAction> getRedirectionAction(final CallContext ctx) {
        throw new UnsupportedOperationException("Direct clients cannot redirect for login");
    }

    /** {@inheritDoc} */
    @Override
    public final HttpAction processLogout(final CallContext ctx, final Credentials credentials) {
        throw new UnsupportedOperationException("Direct clients cannot process logout");
    }

    /** {@inheritDoc} */
    @Override
    public final Optional<RedirectionAction> getLogoutAction(final CallContext ctx, final UserProfile currentProfile,
                                                             final String targetUrl) {
        throw new UnsupportedOperationException("Direct clients cannot redirect for logout");
    }
}

        // ensures components have been properly initialized
        assertNotNull("credentialsExtractor", getCredentialsExtractor());
        assertNotNull("authenticator", getAuthenticator());
        assertNotNull("profileCreator", getProfileCreator());
    
<methods>public non-sealed void <init>() ,public void addAuthorizationGenerator(org.pac4j.core.authorization.generator.AuthorizationGenerator) ,public void addAuthorizationGenerators(Collection<org.pac4j.core.authorization.generator.AuthorizationGenerator>) ,public org.pac4j.core.logout.handler.SessionLogoutHandler findSessionLogoutHandler() ,public Optional<org.pac4j.core.credentials.Credentials> getCredentials(CallContext) ,public java.lang.String getName() ,public java.lang.Boolean getSaveProfileInSession(org.pac4j.core.context.WebContext, org.pac4j.core.profile.UserProfile) ,public final Optional<org.pac4j.core.profile.UserProfile> getUserProfile(CallContext, org.pac4j.core.credentials.Credentials) ,public boolean isMultiProfile(org.pac4j.core.context.WebContext, org.pac4j.core.profile.UserProfile) ,public void notifySessionRenewal(CallContext, java.lang.String) ,public Optional<org.pac4j.core.profile.UserProfile> renewUserProfile(CallContext, org.pac4j.core.profile.UserProfile) ,public void setAuthorizationGenerator(org.pac4j.core.authorization.generator.AuthorizationGenerator) ,public void setAuthorizationGenerators(List<org.pac4j.core.authorization.generator.AuthorizationGenerator>) ,public transient void setAuthorizationGenerators(org.pac4j.core.authorization.generator.AuthorizationGenerator[]) ,public void setCustomProperties(Map<java.lang.String,java.lang.Object>) ,public void setProfileFactoryWhenNotAuthenticated(org.pac4j.core.profile.factory.ProfileFactory) ,public final Optional<org.pac4j.core.credentials.Credentials> validateCredentials(CallContext, org.pac4j.core.credentials.Credentials) <variables>private org.pac4j.core.credentials.authenticator.Authenticator authenticator,private List<org.pac4j.core.authorization.generator.AuthorizationGenerator> authorizationGenerators,private org.pac4j.core.config.Config config,private org.pac4j.core.credentials.extractor.CredentialsExtractor credentialsExtractor,private Map<java.lang.String,java.lang.Object> customProperties,protected final org.slf4j.Logger logger,private boolean multiProfile,private java.lang.String name,private org.pac4j.core.profile.creator.ProfileCreator profileCreator,private org.pac4j.core.profile.factory.ProfileFactory profileFactoryWhenNotAuthenticated,protected java.lang.Boolean saveProfileInSession,private static boolean warned