docs: public <T> T get(CacheKey cacheKey, Class<T> type) {
          if (cacheKey == null) {
              throw new IllegalArgumentException("Parameter 'cacheKey' must be not null");
          }
          if (type == null) {
              throw new IllegalArgumentException("Parameter 'type' must be not null");
          }
  
          Object cached = this.data.get(cacheKey);
          if (cached != null) {
              if (!type.isInstance(cached)) {
                  throw new IllegalArgumentException("Cached object for "
                          + cacheKey
                          + " is not of type "
                          + type.getName());
              }
              return type.cast(cached);
          }
          return null;
      }