code: public Object store(String correlationId, String key, Object value, long timeout) {
  		synchronized (_lock) {
  			// Get the entry
  			CacheEntry entry = _cache.get(key);
  			timeout = timeout > 0 ? timeout : _timeout;
  
  			// Shortcut to remove entry from the cache
  			if (value == null) {
  				if (entry != null) {
  					_cache.remove(key);
  					_count--;
  				}
  				return null;
  			}
  
  			// Update the entry
  			if (entry != null) {
  				entry.setValue(value, timeout);
  			}
  			// Or create a new entry
  			else {
  				entry = new CacheEntry(key, value, timeout);
  				_cache.put(key, entry);
  				_count++;
  			}
  
  			// Clean up the cache
  			if (_maxSize > 0 && _count > _maxSize)
  				cleanup();
  
  			return value;
  		}
  	}
docs: Stores value in the cache with expiration time.
  
  @param correlationId (optional) transaction id to trace execution through
  call chain.
  @param key           a unique value key.
  @param value         a value to store.
  @param timeout       expiration timeout in milliseconds.
  @return a cached value stored in the cache.