code: public Value putIfAbsent(T key, long expiry_time) {
          if(key == null)
              key=NULL_KEY;
          Value val=map.get(key);
          if(val == null) {
              val=new Value();
              Value existing=map.putIfAbsent(key, val);
              if(existing == null)
                  return val;
              val=existing;
          }
          // key already exists
          if(val.update().age() > expiry_time) {
              map.remove(key);
              map.putIfAbsent(key, new Value());
              return val;
          }
          return null;
      }
docs: Adds a new key to the hashmap, or updates the Value associated with the existing key if present. If expiry_time
  is greater than the age of the Value, the key will be removed.
  @param key The key
  @param expiry_time Expiry time (in ms)
  @return Null if the key was present and not expired, or the Value associated with the existing key
  (its count incremented)