code: public <R> Change<R> map(Function<T, R> fn) {
          return new Change<>(
                  fn.apply(getOldValue()),
                  fn.apply(getNewValue())
          );
      }
docs: Applies a mapping function to both the old and the new value, wrapping the result
  in a new Change.
  @param fn the mapping function
  @param <R> type returned by the mapping function
  @return a new Change with mapped values