code: public synchronized <U> Versioned<U> map(Function<V, U> transformer) {
      return new Versioned<>(value != null ? transformer.apply(value) : null, version, creationTime);
    }
docs: Maps this instance into another after transforming its
  value while retaining the same version and creationTime.
  
  @param transformer function for mapping the value
  @param <U>         value type of the returned instance
  @return mapped instance