code: @Override
      public void put(String scope, Object key, Object value, long expireAfter, long refreshFrequency,
                      CacheLoader loader, Object... loaderParams) throws InvalidScopeException,
          InternalCacheEngineException {
          if (expireAfter < 0) {
              throw new IllegalArgumentException("The expireAfter argument should be 0 or positive");
          }
  
          if (refreshFrequency < 0) {
              throw new IllegalArgumentException("The refreshFrequency argument should be 0 or positive");
          }
  
          if (value instanceof CachingAwareObject) {
              CachingAwareObject cachingAwareObj = (CachingAwareObject)value;
              cachingAwareObj.setCachingTime(System.currentTimeMillis());
              cachingAwareObj.setScope(scope);
              cachingAwareObj.setKey(key);
          }
  
          try {
              CacheItem item = new CacheItemImpl(scope, ticks.get(), key, value, expireAfter, refreshFrequency,
                                                 loader, loaderParams);
  
              cacheStoreAdapter.put(item);
  
              if (logger.isDebugEnabled()) {
                  logger.debug("Put into cache: " + item);
              }
          } catch (InvalidScopeException ex) {
              throw ex;
          } catch (Exception ex) {
              throw new InternalCacheEngineException("Exception while putting item with key " + key +
                                                     " into scope " + scope, ex);
          }
      }
docs: {@inheritDoc}