code: public <T> void store(@Nonnull Resource resource, @Nonnull Key key, @Nonnull Optional<T> model) {
          if (resource == null) {
              throw new IllegalArgumentException("Method argument resource must not be null");
          }
          if (key == null) {
              throw new IllegalArgumentException("Method argument key must not be null");
          }
          if (model == null) {
              throw new IllegalArgumentException("Method argument model must not be null");
          }
  
          if (this.caches.isEmpty()) {
              return;
          }
  
          final Key lookupKey = key(resource, key);
          for (ResourceModelCache cache : this.caches) {
              cache.put(resource, model, lookupKey);
          }
      }
docs: Stores the model representing the result of the
  {@link Resource#adaptTo(Class) adaptation} of the given resource
  to the given target type.
  
  @param resource must not be <code>null</code>.
  @param key      must not be <code>null</code>.
  @param model    can be <code>null</code>.