class AbstractRedisProxyManagerBuilder<T extends AbstractRedisProxyManagerBuilder> {

    private ExpirationAfterWriteStrategy expirationStrategy;
    private ClientSideConfig clientSideConfig = ClientSideConfig.getDefault();

    /**
     * @deprecated use {@link ClientSideConfig#withExpirationAfterWriteStrategy(ExpirationAfterWriteStrategy)} and {@link #withClientSideConfig(ClientSideConfig)}
     *
     * @param expirationStrategy
     * @return
     */
    @Deprecated
    public T withExpirationStrategy(ExpirationAfterWriteStrategy expirationStrategy) {
        this.expirationStrategy = Objects.requireNonNull(expirationStrategy);
        return (T) this;
    }

    public T withClientSideConfig(ClientSideConfig clientSideConfig) {
        this.clientSideConfig = Objects.requireNonNull(clientSideConfig);
        return (T) this;
    }

    public ExpirationAfterWriteStrategy getNotNullExpirationStrategy() {<FILL_FUNCTION_BODY>}

    public ClientSideConfig getClientSideConfig() {
        return clientSideConfig;
    }

}

        Optional<ExpirationAfterWriteStrategy> optionalStrategy = clientSideConfig.getExpirationAfterWriteStrategy();
        if (optionalStrategy.isPresent()) {
            return optionalStrategy.get();
        }
        if (expirationStrategy == null) {
            return ExpirationAfterWriteStrategy.none();
        }
        return expirationStrategy;
    
<no_super_class>