docs: private void processVer2(final Memory skMem) {
      Util.checkSeedHashes(seedHash_, skMem.getShort(SEED_HASH_SHORT));
      final int preLongs = skMem.getByte(PREAMBLE_LONGS_BYTE) & 0X3F;
      final int curCount = skMem.getInt(RETAINED_ENTRIES_INT);
      final long thetaLongIn;
      if (preLongs == 1) { //does not change anything {1.0, 0, T}
        return;
      }
      if (preLongs == 2) { //exact mode
        assert curCount > 0;
        thetaLongIn = Long.MAX_VALUE;
      } else { //prelongs == 3, curCount may be 0 (e.g., from intersection)
        thetaLongIn = skMem.getLong(THETA_LONG);
      }
      unionThetaLong_ = min(unionThetaLong_, thetaLongIn); //Theta rule
      for (int i = 0; i < curCount; i++ ) {
        final int offsetBytes = (preLongs + i) << 3;
        final long hashIn = skMem.getLong(offsetBytes);
        if (hashIn >= unionThetaLong_) { break; } // "early stop"
        gadget_.hashUpdate(hashIn); //backdoor update, hash function is bypassed
      }
      unionThetaLong_ = min(unionThetaLong_, gadget_.getThetaLong());
      unionEmpty_ = unionEmpty_ && gadget_.isEmpty();
    }