code: @Override
      public <R> LazyImmutable<R> map(final Function<? super T, ? extends R> fn) {
          final T val = get();
          if (val == UNSET)
              return (LazyImmutable<R>) this;
          else
              return LazyImmutable.of(fn.apply(val));
      }
docs: Map the value stored in this Immutable Closed Value from one Value to another
  If this is an unitiatilised ImmutableClosedValue, an uninitialised closed value will be returned instead
  
  @param fn Mapper function
  @return new ImmutableClosedValue with new mapped value