class ClientSideState {

    @SuppressWarnings("JdkObsolete")
    public NewCookie persist(final String key, final String path, final Object value) {
        final Date expiry = Date.from(ZonedDateTime.now(ZoneOffset.UTC).plusSeconds(timeout).toInstant());
        return new NewCookie(key, protect(value), path, null, Cookie.DEFAULT_VERSION, null, timeout, expiry, true, false);
    }

    public  ClientSideState(final Edition edition);
    public  ClientSideState(final Edition edition, final int timeout);
      ClientSideState(final Edition edition, final LongSupplier timeSource, final int timeout);
      ClientSideState(final Edition edition, final LongSupplier timeSource, final Supplier<byte[]> ivSource,
        final Function<Object, byte[]> serialization, final BiFunction<Class<?>, byte[], Object> deserialization, final int timeout);

}