docs: public void collect(ExplorationStep state) {
  		final int[] closed = state.pattern;
  		final int[] tmp = new int[closed.length];
  		final int supportCount = state.counters.transactionsCount;
  		
  		final LinkedList<Integer> extensions = new LinkedList<Integer>();
  		final int newItemsLength = state.counters.closure.length;
  		
  		if (newItemsLength < closed.length) {
  			
  			extensions.add(closed[newItemsLength]);
  			
  			for (int i = 0; i < newItemsLength; i++) {
  				// note that the following line uses internal item IDs
  				if (state.parent.getFailedFPTest(state.counters.closure[i]) == state.core_item) {
  					// but this line uses original item IDs
  					extensions.add(closed[i]);
  					// the trick is that they have the same indexes in both arrays
  				}
  			}
  			
  			enumerateExtensionSets(extensions, 0, closed, tmp, 0, supportCount);
  		} else {
  			enumerateBasePatternSets(0, closed, tmp, 0, extensions, supportCount);
  		}
  	}