class Versioned {

    public synchronized <U> Versioned<U> map(Function<V, U> transformer) {
        return new Versioned<>(transformer.apply(value), version, creationTime);
    }

    public  Versioned(V value, long version, long creationTime);
    public  Versioned(V value, long version);

}