@Override
    public Optional<SessionStore> buildFromTrackableSession(final WebContext context,
                                                            final Object trackableSession) {
        val encoded = DefaultBrowserStorage
            .builder()
            .storageType(BrowserStorage.BrowserStorageTypes.LOCAL)
            .context(browserStorageContextKey)
            .payload(trackableSession instanceof final BrowserStorage bs ? bs.getPayload() : trackableSession.toString())
            .build()
            .getPayloadJson()
            .get("context")
            .toString()
            .getBytes(StandardCharsets.UTF_8);
        val attributes = (Map<String, Object>) SerializationUtils.decodeAndDeserializeObject(encoded, webflowCipherExecutor, LinkedHashMap.class);
        attributes.forEach((key, value) -> set(context, key, value));
        context.setRequestAttribute("sessionStorageAttributes", attributes);
        return Optional.of(this);
    }
This is {@link BrowserWebStorageSessionStore}.

@author Misagh Moayyed
@since 6.4.0
support/cas-server-support-pac4j-api/src/main/java/org/apereo/cas/pac4j/BrowserWebStorageSessionStore.java