docs: @Override
      public synchronized Object get(Object key) {
          ValueWrapper valueWrapper = (ValueWrapper) super.get(key);
          if (valueWrapper != null) {
              // Check if value has expired
              long creationTime = valueWrapper.getCreationTime();
              long cacheInterval = valueWrapper.getCacheInterval();
              long currentTime = System.currentTimeMillis();
              if (cacheInterval >= 0 && creationTime + cacheInterval < currentTime) {
                  remove(key);
                  return null;
              }
              return valueWrapper.getValue();
          } else return null;
      }