code: public Object remove(Object key)
      {
          synchronized (objects)
          {
              Object remove = objects.remove(key);
              objectTimeStamps.remove(key);
              if (remove != null)
              {
                  findNextExpireTime();
              }
              return remove;
          }
      }
docs: When we remove any object, we must found again nextTimeSomeExpired.
  
  @param key - key to remove
  @return - object, if any