code: public <T> T setIfNull(Class<T> type, T instance) {
          Object o = data.putIfAbsent(type, instance);
          if (o!=null)    return type.cast(o);
          return instance;
      }
docs: Overwrites the value only if the current value is null.
  
  @return
  If the value was null, return the {@code instance} value.
  Otherwise return the current value, which is non-null.