code: public int[] compressRenaming(int[] olderReverseRenaming) {
  		int[] renaming = new int[Math.max(olderReverseRenaming.length, this.supportCounts.length)];
  		this.reverseRenaming = new int[this.nbFrequents];
  
  		// we will always have newItemID <= item
  		int newItemID = 0;
  		int greatestBelowMaxCandidate = Integer.MIN_VALUE;
  
  		for (int item = 0; item < this.supportCounts.length; item++) {
  			if (this.supportCounts[item] > 0) {
  				renaming[item] = newItemID;
  				this.reverseRenaming[newItemID] = olderReverseRenaming[item];
  
  				this.distinctTransactionsCounts[newItemID] = this.distinctTransactionsCounts[item];
  				this.supportCounts[newItemID] = this.supportCounts[item];
  
  				if (item < this.maxCandidate) {
  					greatestBelowMaxCandidate = newItemID;
  				}
  
  				newItemID++;
  			} else {
  				renaming[item] = -1;
  			}
  		}
  
  		this.maxCandidate = greatestBelowMaxCandidate + 1;
  		Arrays.fill(renaming, this.supportCounts.length, renaming.length, -1);
  
  		this.maxFrequent = newItemID - 1;
  		this.compactedArrays = true;
  
  		this.renaming = renaming;
  		
  		return renaming;
  	}
docs: Will compress an older renaming, by removing infrequent items. Contained
  arrays (except closure) will refer new item IDs
  
  @param olderReverseRenaming
  reverseRenaming from the dataset that fed this Counter
  @return the translation from the old renaming to the compressed one
  (gives -1 for removed items)