code: protected void cleanupAcksReceived(long remoteCSeq) {
  		List<Long> toBeRemoved = new ArrayList<Long>();
  		final Iterator<Entry<Long, Boolean>> cSeqs = acksReceived.entrySet().iterator();
  		while (cSeqs.hasNext()) {
  			final Entry<Long, Boolean> entry = cSeqs.next();
  			final long cSeq = entry.getKey();
  			final boolean ackReceived = entry.getValue();
  			if(ackReceived && cSeq < remoteCSeq) {
  				toBeRemoved.add(cSeq);
  			}
  		}
  		for(Long cSeq: toBeRemoved) {
  			acksReceived.remove(cSeq);
  			if(logger.isDebugEnabled()) {
  				logger.debug("removed ackReceived for CSeq " + cSeq);
  			}
  		}
  	}
docs: We clean up the stored acks received when the remoteCSeq in param is greater and
  that the ackReceived is true
  @param remoteCSeq remoteCSeq the basis CSeq for cleaning up earlier (lower CSeq) stored ackReceived