code: @Override
    UpdateReturnState hashUpdate(final long hash) {
      if (isExactMode) {
        isExactMode = !shared.isEstimationMode();
      }
      HashOperations.checkHashCorruption(hash);
      if ((getHashTableThreshold() == 0) || isExactMode ) {
        //The over-theta and zero test
        if (HashOperations.continueCondition(getThetaLong(), hash)) {
          return RejectedOverTheta; //signal that hash was rejected due to theta or zero.
        }
        if (propagateToSharedSketch(hash)) {
          return ConcurrentPropagated;
        }
      }
      final UpdateReturnState state = super.hashUpdate(hash);
      if (isOutOfSpace(getRetainedEntries() + 1)) {
        propagateToSharedSketch();
        return ConcurrentPropagated;
      }
      if (state == UpdateReturnState.InsertedCountIncremented) {
        return ConcurrentBufferInserted;
      }
      return state;
    }
docs: Updates buffer with given hash value.
  Triggers propagation to shared sketch if buffer is full.
  
  @param hash the given input hash value.  A hash of zero or Long.MAX_VALUE is ignored.
  A negative hash value will throw an exception.
  @return
  <a href="{@docRoot}/resources/dictionary.html#updateReturnState">See Update Return State</a>