code: public <M> Value<M> map (Function<T, M> func)
      {
          return new MappedValue<T, M>(this, func);
      }
docs: Creates a value that maps this value via a function. Every time the target value is updated
  the mapped value will be updated, regardless of whether or not the mapped value differs. The
  returned value will be a view and reject attempts to call {@link #update}.