code: public void cleanExpiredCallbacks() {
          long now = System.currentTimeMillis();
          
          // Cuncurrency could be possible for multiple instantiations
          synchronized(regCallbacks) {    
              Iterator<Map.Entry<String, RegisteredCallback>> it = regCallbacks.entrySet().iterator();
              Map.Entry<String, RegisteredCallback> entry;
              
              while (it.hasNext()) {
                  entry = it.next();
                  if (now - entry.getValue().getTimestamp() > CALLBACK_EXPIRE_TIME) {
                      it.remove();
                  }
              }
          }
      }
docs: Expire callbacks cleaning method. When called it remove from
  the received callbacks list all the sent challenge which haven't received
  any answer till now according to an expiring constraint. Currently
  the cleaning is done for every new inserting and every received callback,
  but it can be done also with a scheduled cleaning thread if the number
  of items is memory and time consuming...
  Maybe to be understood in the future.