code: @SuppressWarnings("unchecked")
      public static <V> CacheValue<V> getInstance(V value) {
          if (value == null) {
              return NULL_VALUE;
          }
          return strength == Strength.STRONG ? new StrongValue<V>(value) : new SoftValue<V>(value);
      }
docs: Returns a CacheValue instance that holds the value.
  It holds it directly if the value is null or if the current "strength" is {@code STRONG}.
  Otherwise, it holds it via a {@link Reference}.