public void increment(@NonNull E e) {
    if (isNotInitialized()) {
      return;
    }

    int hash = spread(e.hashCode());
    int start = (hash & 3) << 2;

    // Loop unrolling improves throughput by 5m ops/s
    int index0 = indexOf(hash, 0);
    int index1 = indexOf(hash, 1);
    int index2 = indexOf(hash, 2);
    int index3 = indexOf(hash, 3);

    boolean added = incrementAt(index0, start);
    added |= incrementAt(index1, start + 1);
    added |= incrementAt(index2, start + 2);
    added |= incrementAt(index3, start + 3);

    if (added && (++size == sampleSize)) {
      reset();
    }
  }
public void increment ( @ NonNull E e ) { if ( isNotInitialized ( ) ) { return ; } int hash = spread ( e . hashCode ( ) ) ; int start = ( hash & 3 ) << 2 ; int index0 = indexOf ( hash , 0 ) ; int index1 = indexOf ( hash , 1 ) ; int index2 = indexOf ( hash , 2 ) ; int index3 = indexOf ( hash , 3 ) ; boolean added = incrementAt ( index0 , start ) ; added |= incrementAt ( index1 , start + 1 ) ; added |= incrementAt ( index2 , start + 2 ) ; added |= incrementAt ( index3 , start + 3 ) ; if ( added && ( ++ size == sampleSize ) ) { reset ( ) ; } }
Increments the popularity of the element if it does not exceed the maximum (15). The popularity
of all elements will be periodically down sampled when the observed events exceeds a threshold.
This process provides a frequency aging to allow expired long term entries to fade away.

@param e the element to add