code: public static CacheEntryView<Data, Data> createEntryView(Data key, Data value, Data expiryPolicy, CacheRecord record,
                                                               CacheEntryViewType cacheEntryViewType) {
          if (cacheEntryViewType == null) {
              throw new IllegalArgumentException("Empty cache entry view type");
          }
          switch (cacheEntryViewType) {
              case DEFAULT:
                  return createDefaultEntryView(key, value, expiryPolicy, record);
              case LAZY:
                  return createLazyEntryView(key, value, expiryPolicy, record);
              default:
                  throw new IllegalArgumentException("Invalid cache entry view type: " + cacheEntryViewType);
          }
      }
docs: Creates a {@link CacheEntryView} instance.
  
  @param key                   the key to be wrapped
  @param value                 the value to be wrapped
  @param record                {@link CacheRecord} instance to gather additional entry view properties like
  access time, expiration time and access hit
  @param cacheEntryViewType    the type of the {@link CacheEntryView} represented as {@link CacheEntryViewType}
  @return the {@link CacheEntryView} instance