You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by le...@apache.org on 2020/04/15 19:31:43 UTC

[incubator-datasketches-java] 01/01: Simplified, but did not eliminate the HLL union switch statement.

This is an automated email from the ASF dual-hosted git repository.

leerho pushed a commit to branch Refactor_HLL_Union_switch
in repository https://gitbox.apache.org/repos/asf/incubator-datasketches-java.git

commit 2006990c93c8847f81b8139c261f10d667d731f6
Author: Lee Rhodes <le...@users.noreply.github.com>
AuthorDate: Wed Apr 15 12:31:07 2020 -0700

    Simplified, but did not eliminate the HLL union switch statement.
    
    Removed the Out-of-order flag in the coupon classes.  Corrected tests
    that assumed the prior assumptions of OOO for sets.
---
 .../apache/datasketches/hll/AbstractCoupons.java   |   8 +
 .../apache/datasketches/hll/AbstractHllArray.java  |   2 +-
 .../org/apache/datasketches/hll/BaseHllSketch.java |   2 +-
 .../org/apache/datasketches/hll/Conversions.java   |   6 +-
 .../org/apache/datasketches/hll/CouponHashSet.java |   1 -
 .../org/apache/datasketches/hll/CouponList.java    |  20 +-
 .../apache/datasketches/hll/DirectCouponList.java  |  15 --
 .../apache/datasketches/hll/DirectHllArray.java    |   4 +-
 .../java/org/apache/datasketches/hll/HllArray.java |   8 +-
 .../org/apache/datasketches/hll/HllEstimators.java |   4 +-
 .../org/apache/datasketches/hll/HllSketch.java     |  11 +-
 .../org/apache/datasketches/hll/HllSketchImpl.java |   4 +-
 .../apache/datasketches/hll/ToByteArrayImpl.java   |   4 +-
 .../java/org/apache/datasketches/hll/Union.java    | 253 ++++++++-------------
 .../apache/datasketches/hll/DirectUnionTest.java   |   6 +-
 .../org/apache/datasketches/hll/UnionCaseTest.java |  30 +--
 .../org/apache/datasketches/hll/UnionTest.java     |   6 +-
 17 files changed, 154 insertions(+), 230 deletions(-)

diff --git a/src/main/java/org/apache/datasketches/hll/AbstractCoupons.java b/src/main/java/org/apache/datasketches/hll/AbstractCoupons.java
index 3aef6a3..8e87667 100644
--- a/src/main/java/org/apache/datasketches/hll/AbstractCoupons.java
+++ b/src/main/java/org/apache/datasketches/hll/AbstractCoupons.java
@@ -102,6 +102,11 @@ abstract class AbstractCoupons extends HllSketchImpl {
   }
 
   @Override
+  boolean isOutOfOrder() {
+    return false;
+  }
+
+  @Override
   boolean isRebuildCurMinNumKxQFlag() {
     return false;
   }
@@ -110,6 +115,9 @@ abstract class AbstractCoupons extends HllSketchImpl {
   void putEmptyFlag(final boolean empty) {} //no-op for coupons
 
   @Override
+  void putOutOfOrder(final boolean outOfOrder) {} //no-op for coupons
+
+  @Override
   void putRebuildCurMinNumKxQFlag(final boolean rebuild) {} //no-op for coupons
 
   @Override
diff --git a/src/main/java/org/apache/datasketches/hll/AbstractHllArray.java b/src/main/java/org/apache/datasketches/hll/AbstractHllArray.java
index 4db265c..cbefe43 100644
--- a/src/main/java/org/apache/datasketches/hll/AbstractHllArray.java
+++ b/src/main/java/org/apache/datasketches/hll/AbstractHllArray.java
@@ -87,7 +87,7 @@ abstract class AbstractHllArray extends HllSketchImpl {
 
   @Override
   double getEstimate() {
-    if (isOutOfOrderFlag()) {
+    if (isOutOfOrder()) {
       return getCompositeEstimate();
     }
     return getHipAccum();
diff --git a/src/main/java/org/apache/datasketches/hll/BaseHllSketch.java b/src/main/java/org/apache/datasketches/hll/BaseHllSketch.java
index 3a1ec80..252a3c2 100644
--- a/src/main/java/org/apache/datasketches/hll/BaseHllSketch.java
+++ b/src/main/java/org/apache/datasketches/hll/BaseHllSketch.java
@@ -175,7 +175,7 @@ abstract class BaseHllSketch {
    * @return true if the current estimator is the non-HIP estimator, which is slightly less
    * accurate than the HIP estimator.
    */
-  abstract boolean isOutOfOrderFlag();
+  abstract boolean isOutOfOrder();
 
   /**
    * Returns true if the given Memory refers to the same underlying resource as this sketch.
diff --git a/src/main/java/org/apache/datasketches/hll/Conversions.java b/src/main/java/org/apache/datasketches/hll/Conversions.java
index 0f06ffe..fc28143 100644
--- a/src/main/java/org/apache/datasketches/hll/Conversions.java
+++ b/src/main/java/org/apache/datasketches/hll/Conversions.java
@@ -34,7 +34,7 @@ class Conversions {
   static final Hll4Array convertToHll4(final AbstractHllArray srcAbsHllArr) {
     final int lgConfigK = srcAbsHllArr.getLgConfigK();
     final Hll4Array hll4Array = new Hll4Array(lgConfigK);
-    hll4Array.putOutOfOrderFlag(srcAbsHllArr.isOutOfOrderFlag());
+    hll4Array.putOutOfOrder(srcAbsHllArr.isOutOfOrder());
 
     //1st pass: compute starting curMin and numAtCurMin:
     final int pair = curMinAndNum(srcAbsHllArr);
@@ -99,7 +99,7 @@ class Conversions {
   static final Hll6Array convertToHll6(final AbstractHllArray srcAbsHllArr) {
     final int lgConfigK = srcAbsHllArr.lgConfigK;
     final Hll6Array hll6Array = new Hll6Array(lgConfigK);
-    hll6Array.putOutOfOrderFlag(srcAbsHllArr.isOutOfOrderFlag());
+    hll6Array.putOutOfOrder(srcAbsHllArr.isOutOfOrder());
     int numZeros = 1 << lgConfigK;
     final PairIterator itr = srcAbsHllArr.iterator();
     while (itr.nextAll()) {
@@ -117,7 +117,7 @@ class Conversions {
   static final Hll8Array convertToHll8(final AbstractHllArray srcAbsHllArr) {
     final int lgConfigK = srcAbsHllArr.lgConfigK;
     final Hll8Array hll8Array = new Hll8Array(lgConfigK);
-    hll8Array.putOutOfOrderFlag(srcAbsHllArr.isOutOfOrderFlag());
+    hll8Array.putOutOfOrder(srcAbsHllArr.isOutOfOrder());
     int numZeros = 1 << lgConfigK;
     final PairIterator itr = srcAbsHllArr.iterator();
     while (itr.nextAll()) {
diff --git a/src/main/java/org/apache/datasketches/hll/CouponHashSet.java b/src/main/java/org/apache/datasketches/hll/CouponHashSet.java
index 4320ba7..b9824e5 100644
--- a/src/main/java/org/apache/datasketches/hll/CouponHashSet.java
+++ b/src/main/java/org/apache/datasketches/hll/CouponHashSet.java
@@ -79,7 +79,6 @@ class CouponHashSet extends CouponList {
     final CurMode curMode = extractCurMode(mem);
     final int memArrStart = (curMode == CurMode.LIST) ? LIST_INT_ARR_START : HASH_SET_INT_ARR_START;
     final CouponHashSet set = new CouponHashSet(lgConfigK, tgtHllType);
-    set.putOutOfOrderFlag(true);
     final boolean memIsCompact = extractCompactFlag(mem);
     final int couponCount = extractHashSetCount(mem);
     int lgCouponArrInts = extractLgArr(mem);
diff --git a/src/main/java/org/apache/datasketches/hll/CouponList.java b/src/main/java/org/apache/datasketches/hll/CouponList.java
index 5a3c6e6..ee3eeb9 100644
--- a/src/main/java/org/apache/datasketches/hll/CouponList.java
+++ b/src/main/java/org/apache/datasketches/hll/CouponList.java
@@ -26,7 +26,6 @@ import static org.apache.datasketches.hll.PreambleUtil.LIST_INT_ARR_START;
 import static org.apache.datasketches.hll.PreambleUtil.LIST_PREINTS;
 import static org.apache.datasketches.hll.PreambleUtil.extractLgK;
 import static org.apache.datasketches.hll.PreambleUtil.extractListCount;
-import static org.apache.datasketches.hll.PreambleUtil.extractOooFlag;
 import static org.apache.datasketches.hll.PreambleUtil.extractTgtHllType;
 
 import org.apache.datasketches.SketchesStateException;
@@ -38,7 +37,6 @@ import org.apache.datasketches.memory.WritableMemory;
  * @author Kevin Lang
  */
 class CouponList extends AbstractCoupons {
-  boolean oooFlag = false; //Out-Of-Order Flag
   int lgCouponArrInts;
   int couponCount;
   int[] couponIntArr;
@@ -53,11 +51,9 @@ class CouponList extends AbstractCoupons {
     super(lgConfigK, tgtHllType, curMode);
     if (curMode == CurMode.LIST) {
       lgCouponArrInts = LG_INIT_LIST_SIZE;
-      oooFlag = false;
     } else { //SET
       lgCouponArrInts = LG_INIT_SET_SIZE;
       assert lgConfigK > 7;
-      oooFlag = true;
     }
     couponIntArr = new int[1 << lgCouponArrInts];
     couponCount = 0;
@@ -69,7 +65,6 @@ class CouponList extends AbstractCoupons {
    */
   CouponList(final CouponList that) {
     super(that.lgConfigK, that.tgtHllType, that.curMode);
-    oooFlag = that.oooFlag;
     lgCouponArrInts = that.lgCouponArrInts;
     couponCount = that.couponCount;
     couponIntArr = that.couponIntArr.clone();
@@ -82,7 +77,6 @@ class CouponList extends AbstractCoupons {
    */ //also used by CouponHashSet
   CouponList(final CouponList that, final TgtHllType tgtHllType) {
     super(that.lgConfigK, tgtHllType, that.curMode);
-    oooFlag = that.oooFlag;
     lgCouponArrInts = that.lgCouponArrInts;
     couponCount = that.couponCount;
     couponIntArr = that.couponIntArr.clone();
@@ -96,7 +90,6 @@ class CouponList extends AbstractCoupons {
     final int couponCount = extractListCount(mem);
     mem.getIntArray(LIST_INT_ARR_START, list.couponIntArr, 0, couponCount);
     list.couponCount = couponCount;
-    list.putOutOfOrderFlag(extractOooFlag(mem));
     return list;
   }
 
@@ -191,11 +184,6 @@ class CouponList extends AbstractCoupons {
   }
 
   @Override
-  boolean isOutOfOrderFlag() {
-    return oooFlag;
-  }
-
-  @Override
   boolean isSameResource(final Memory mem) {
     return false;
   }
@@ -216,11 +204,6 @@ class CouponList extends AbstractCoupons {
   }
 
   @Override
-  void putOutOfOrderFlag(final boolean oooFlag) {
-    this.oooFlag = oooFlag;
-  }
-
-  @Override
   CouponList reset() {
     return new CouponList(lgConfigK, tgtHllType, CurMode.LIST);
   }
@@ -232,7 +215,6 @@ class CouponList extends AbstractCoupons {
     for (int i = 0; i < couponCount; i++) {
       chSet.couponUpdate(arr[i]);
     }
-    chSet.putOutOfOrderFlag(true);
     return chSet;
   }
 
@@ -248,7 +230,7 @@ class CouponList extends AbstractCoupons {
     }
     tgtHllArr.putHipAccum(src.getEstimate());
 
-    tgtHllArr.putOutOfOrderFlag(false);
+    tgtHllArr.putOutOfOrder(false);
     return tgtHllArr;
   }
 
diff --git a/src/main/java/org/apache/datasketches/hll/DirectCouponList.java b/src/main/java/org/apache/datasketches/hll/DirectCouponList.java
index 26b5572..7ef258c 100644
--- a/src/main/java/org/apache/datasketches/hll/DirectCouponList.java
+++ b/src/main/java/org/apache/datasketches/hll/DirectCouponList.java
@@ -28,13 +28,11 @@ import static org.apache.datasketches.hll.PreambleUtil.HASH_SET_PREINTS;
 import static org.apache.datasketches.hll.PreambleUtil.HLL_PREINTS;
 import static org.apache.datasketches.hll.PreambleUtil.LIST_INT_ARR_START;
 import static org.apache.datasketches.hll.PreambleUtil.LIST_PREINTS;
-import static org.apache.datasketches.hll.PreambleUtil.OUT_OF_ORDER_FLAG_MASK;
 import static org.apache.datasketches.hll.PreambleUtil.computeLgArr;
 import static org.apache.datasketches.hll.PreambleUtil.extractCompactFlag;
 import static org.apache.datasketches.hll.PreambleUtil.extractInt;
 import static org.apache.datasketches.hll.PreambleUtil.extractLgArr;
 import static org.apache.datasketches.hll.PreambleUtil.extractListCount;
-import static org.apache.datasketches.hll.PreambleUtil.extractOooFlag;
 import static org.apache.datasketches.hll.PreambleUtil.insertCurMin;
 import static org.apache.datasketches.hll.PreambleUtil.insertCurMode;
 import static org.apache.datasketches.hll.PreambleUtil.insertEmptyFlag;
@@ -47,7 +45,6 @@ import static org.apache.datasketches.hll.PreambleUtil.insertLgK;
 import static org.apache.datasketches.hll.PreambleUtil.insertListCount;
 import static org.apache.datasketches.hll.PreambleUtil.insertModes;
 import static org.apache.datasketches.hll.PreambleUtil.insertNumAtCurMin;
-import static org.apache.datasketches.hll.PreambleUtil.insertOooFlag;
 import static org.apache.datasketches.hll.PreambleUtil.insertPreInts;
 import static org.apache.datasketches.hll.PreambleUtil.insertSerVer;
 
@@ -207,11 +204,6 @@ class DirectCouponList extends AbstractCoupons {
   }
 
   @Override
-  boolean isOutOfOrderFlag() {
-    return extractOooFlag(mem);
-  }
-
-  @Override
   boolean isSameResource(final Memory mem) {
     return this.mem.isSameResource(mem);
   }
@@ -234,12 +226,6 @@ class DirectCouponList extends AbstractCoupons {
     }
   }
 
-  @Override //not used on the direct side
-  void putOutOfOrderFlag(final boolean oooFlag) {
-    assert wmem != null;
-    insertOooFlag(wmem, oooFlag);
-  }
-
   @Override
   DirectCouponList reset() {
     if (wmem == null) {
@@ -269,7 +255,6 @@ class DirectCouponList extends AbstractCoupons {
     insertPreInts(wmem, HASH_SET_PREINTS);
     //SerVer, FamID, LgK  should be OK
     insertLgArr(wmem, LG_INIT_SET_SIZE);
-    insertFlags(wmem, (byte) OUT_OF_ORDER_FLAG_MASK); //set oooFlag
     insertCurMin(wmem, 0); //was list count
     insertCurMode(wmem, CurMode.SET);
     //tgtHllType should already be ok
diff --git a/src/main/java/org/apache/datasketches/hll/DirectHllArray.java b/src/main/java/org/apache/datasketches/hll/DirectHllArray.java
index 753abd4..185a013 100644
--- a/src/main/java/org/apache/datasketches/hll/DirectHllArray.java
+++ b/src/main/java/org/apache/datasketches/hll/DirectHllArray.java
@@ -179,7 +179,7 @@ abstract class DirectHllArray extends AbstractHllArray {
   }
 
   @Override
-  boolean isOutOfOrderFlag() {
+  boolean isOutOfOrder() {
     return extractOooFlag(mem);
   }
 
@@ -248,7 +248,7 @@ abstract class DirectHllArray extends AbstractHllArray {
   }
 
   @Override //not used on the direct side
-  void putOutOfOrderFlag(final boolean oooFlag) {
+  void putOutOfOrder(final boolean oooFlag) {
     checkReadOnly(wmem);
     insertOooFlag(wmem, oooFlag);
   }
diff --git a/src/main/java/org/apache/datasketches/hll/HllArray.java b/src/main/java/org/apache/datasketches/hll/HllArray.java
index 8a0bab4..b23381b 100644
--- a/src/main/java/org/apache/datasketches/hll/HllArray.java
+++ b/src/main/java/org/apache/datasketches/hll/HllArray.java
@@ -71,7 +71,7 @@ abstract class HllArray extends AbstractHllArray {
    */
   HllArray(final HllArray that) {
     super(that.getLgConfigK(), that.getTgtHllType(), CurMode.HLL);
-    oooFlag = that.isOutOfOrderFlag();
+    oooFlag = that.isOutOfOrder();
     rebuildCurMinNumKxQ = that.isRebuildCurMinNumKxQFlag();
     curMin = that.getCurMin();
     numAtCurMin = that.getNumAtCurMin();
@@ -180,7 +180,7 @@ abstract class HllArray extends AbstractHllArray {
   }
 
   @Override
-  boolean isOutOfOrderFlag() {
+  boolean isOutOfOrder() {
     return oooFlag;
   }
 
@@ -228,7 +228,7 @@ abstract class HllArray extends AbstractHllArray {
   }
 
   @Override
-  void putOutOfOrderFlag(final boolean oooFlag) {
+  void putOutOfOrder(final boolean oooFlag) {
     this.oooFlag = oooFlag;
   }
 
@@ -255,7 +255,7 @@ abstract class HllArray extends AbstractHllArray {
 
   //used by heapify by all Heap HLL
   static final void extractCommonHll(final Memory srcMem, final HllArray hllArray) {
-    hllArray.putOutOfOrderFlag(extractOooFlag(srcMem));
+    hllArray.putOutOfOrder(extractOooFlag(srcMem));
     hllArray.putEmptyFlag(extractEmptyFlag(srcMem));
     hllArray.putCurMin(extractCurMin(srcMem));
     hllArray.putHipAccum(extractHipAccum(srcMem));
diff --git a/src/main/java/org/apache/datasketches/hll/HllEstimators.java b/src/main/java/org/apache/datasketches/hll/HllEstimators.java
index 78df59b..8ff18f6 100644
--- a/src/main/java/org/apache/datasketches/hll/HllEstimators.java
+++ b/src/main/java/org/apache/datasketches/hll/HllEstimators.java
@@ -52,7 +52,7 @@ class HllEstimators {
         (absHllArr.getCurMin() == 0) ? configK - absHllArr.getNumAtCurMin() : configK;
     final double estimate;
     final double rseFactor;
-    final boolean oooFlag = absHllArr.isOutOfOrderFlag();
+    final boolean oooFlag = absHllArr.isOutOfOrder();
     if (oooFlag) {
       estimate = absHllArr.getCompositeEstimate();
       rseFactor = HLL_NON_HIP_RSE_FACTOR;
@@ -71,7 +71,7 @@ class HllEstimators {
     final int configK = 1 << lgConfigK;
     final double estimate;
     final double rseFactor;
-    final boolean oooFlag = absHllArr.isOutOfOrderFlag();
+    final boolean oooFlag = absHllArr.isOutOfOrder();
     if (oooFlag) {
       estimate = absHllArr.getCompositeEstimate();
       rseFactor = HLL_NON_HIP_RSE_FACTOR;
diff --git a/src/main/java/org/apache/datasketches/hll/HllSketch.java b/src/main/java/org/apache/datasketches/hll/HllSketch.java
index 9d0197b..4efd0cb 100644
--- a/src/main/java/org/apache/datasketches/hll/HllSketch.java
+++ b/src/main/java/org/apache/datasketches/hll/HllSketch.java
@@ -368,8 +368,8 @@ public class HllSketch extends BaseHllSketch {
   }
 
   @Override
-  boolean isOutOfOrderFlag() {
-    return hllSketchImpl.isOutOfOrderFlag();
+  boolean isOutOfOrder() {
+    return hllSketchImpl.isOutOfOrder();
   }
 
   @Override
@@ -381,8 +381,9 @@ public class HllSketch extends BaseHllSketch {
     hllSketchImpl.mergeTo(that);
   }
 
-  void putOutOfOrderFlag(final boolean oooFlag) {
-    hllSketchImpl.putOutOfOrderFlag(oooFlag);
+  HllSketch putOutOfOrderFlag(final boolean oooFlag) {
+    hllSketchImpl.putOutOfOrder(oooFlag);
+    return this;
   }
 
   @Override
@@ -413,7 +414,7 @@ public class HllSketch extends BaseHllSketch {
       sb.append("  LB             : ").append(getLowerBound(1)).append(LS);
       sb.append("  Estimate       : ").append(getEstimate()).append(LS);
       sb.append("  UB             : ").append(getUpperBound(1)).append(LS);
-      sb.append("  OutOfOrder Flag: ").append(isOutOfOrderFlag()).append(LS);
+      sb.append("  OutOfOrder Flag: ").append(isOutOfOrder()).append(LS);
       if (getCurMode() == CurMode.HLL) {
         final AbstractHllArray absHll = (AbstractHllArray) hllSketchImpl;
         sb.append("  CurMin         : ").append(absHll.getCurMin()).append(LS);
diff --git a/src/main/java/org/apache/datasketches/hll/HllSketchImpl.java b/src/main/java/org/apache/datasketches/hll/HllSketchImpl.java
index 1bb7d28..63b78c6 100644
--- a/src/main/java/org/apache/datasketches/hll/HllSketchImpl.java
+++ b/src/main/java/org/apache/datasketches/hll/HllSketchImpl.java
@@ -96,7 +96,7 @@ abstract class HllSketchImpl {
 
   abstract boolean isOffHeap();
 
-  abstract boolean isOutOfOrderFlag();
+  abstract boolean isOutOfOrder();
 
   abstract boolean isRebuildCurMinNumKxQFlag();
 
@@ -108,7 +108,7 @@ abstract class HllSketchImpl {
 
   abstract void putEmptyFlag(boolean empty);
 
-  abstract void putOutOfOrderFlag(boolean oooFlag);
+  abstract void putOutOfOrder(boolean oooFlag);
 
   abstract void putRebuildCurMinNumKxQFlag(boolean rebuild);
 
diff --git a/src/main/java/org/apache/datasketches/hll/ToByteArrayImpl.java b/src/main/java/org/apache/datasketches/hll/ToByteArrayImpl.java
index 2179ff7..131a53c 100644
--- a/src/main/java/org/apache/datasketches/hll/ToByteArrayImpl.java
+++ b/src/main/java/org/apache/datasketches/hll/ToByteArrayImpl.java
@@ -93,7 +93,7 @@ class ToByteArrayImpl {
     insertLgK(tgtWmem, srcImpl.getLgConfigK());
     insertEmptyFlag(tgtWmem, srcImpl.isEmpty());
     insertCompactFlag(tgtWmem, compact);
-    insertOooFlag(tgtWmem, srcImpl.isOutOfOrderFlag());
+    insertOooFlag(tgtWmem, srcImpl.isOutOfOrder());
     insertCurMin(tgtWmem, srcImpl.getCurMin());
     insertCurMode(tgtWmem, srcImpl.getCurMode());
     insertTgtHllType(tgtWmem, srcImpl.getTgtHllType());
@@ -245,7 +245,7 @@ class ToByteArrayImpl {
     insertLgK(wmem, impl.getLgConfigK());
     insertLgArr(wmem, impl.getLgCouponArrInts());
     insertEmptyFlag(wmem, impl.isEmpty());
-    insertOooFlag(wmem, impl.isOutOfOrderFlag());
+    insertOooFlag(wmem, impl.isOutOfOrder());
     insertCurMode(wmem, impl.getCurMode());
     insertTgtHllType(wmem, impl.getTgtHllType());
   }
diff --git a/src/main/java/org/apache/datasketches/hll/Union.java b/src/main/java/org/apache/datasketches/hll/Union.java
index 4dc7050..25c6381 100644
--- a/src/main/java/org/apache/datasketches/hll/Union.java
+++ b/src/main/java/org/apache/datasketches/hll/Union.java
@@ -254,8 +254,8 @@ public class Union extends BaseHllSketch {
   }
 
   @Override
-  boolean isOutOfOrderFlag() {
-    return gadget.isOutOfOrderFlag();
+  boolean isOutOfOrder() {
+    return gadget.isOutOfOrder();
   }
 
   @Override
@@ -336,13 +336,13 @@ public class Union extends BaseHllSketch {
   /**
    * Union the given source and destination sketches. This static method examines the state of
    * the current internal gadget and the incoming sketch and determines the optimum way to
-   * perform the union. This may involve swapping, downsampling, transforming, and / or
-   * copying one of the arguments and may completely replace the internals of the union.
+   * perform the union. This may involve swapping the merge order, downsampling, transforming,
+   * and / or copying one of the arguments and may completely replace the internals of the union.
    *
    * <p>If the union gadget is empty, the source sketch is effectively copied to the union gadget
    * after any required transformations.
    *
-   * <p>The direction of the update is required if the union gadget is in LIST or SET mode, and the
+   * <p>The direction of the merge is reversed if the union gadget is in LIST or SET mode, and the
    * source sketch is in HLL mode. This is done to maintain maximum accuracy of the union process.
    *
    * <p>The source sketch is downsampled if the source LgK is larger than maxLgK and in HLL mode.
@@ -350,8 +350,8 @@ public class Union extends BaseHllSketch {
    * <p>The union gadget is downsampled if both source and union gadget are in HLL mode
    * and the source LgK <b>less than</b> the union gadget LgK.
    *
-   * @param source the given incoming sketch, which is not be modified.
-   * @param gadget the given gadget sketch, which has a target of HLL_8 and may be modified.
+   * @param source the given incoming sketch, which cannot be modified.
+   * @param gadget the given gadget sketch, which has a target of HLL_8 and holds the result.
    * @param lgMaxK the maximum value of log2 K for this union.
    * @return the union of the two sketches in the form of the internal HllSketchImpl, which is
    * always in HLL_8 form.
@@ -359,190 +359,129 @@ public class Union extends BaseHllSketch {
   private static HllSketchImpl unionImpl(final HllSketch source, final HllSketch gadget,
       final int lgMaxK) {
     assert gadget.getTgtHllType() == HLL_8;
-    if ((source == null) || source.isEmpty()) { return gadget.hllSketchImpl; }
+    if ((source == null) || source.isEmpty()) {
+      return gadget.hllSketchImpl;
+    }
+
+    final CurMode srcMode = source.getCurMode();
+    if (srcMode == CurMode.LIST ) {
+      source.mergeTo(gadget);
+      return gadget.hllSketchImpl;
+    }
+
     final int srcLgK = source.getLgConfigK();
     final int gadgetLgK = gadget.getLgConfigK();
     final boolean srcIsMem = source.isMemory();
     final boolean gdtIsMem = gadget.isMemory();
-    //Source is either LIST or SET mode
-    if (source.getCurMode() == CurMode.LIST ) {
-      source.mergeTo(gadget);
-      gadget.putOutOfOrderFlag(gadget.isOutOfOrderFlag() | source.isOutOfOrderFlag());
-      return gadget.hllSketchImpl;
-    }
-    if (source.getCurMode() == CurMode.SET ) {
-      if (gadget.isEmpty() && (!srcIsMem) && (!gdtIsMem) && (srcLgK == gadgetLgK)) {
+    final boolean gdtEmpty = gadget.isEmpty();
+
+    if (srcMode == CurMode.SET ) {
+      if (gdtEmpty && (srcLgK == gadgetLgK) && (!srcIsMem) && (!gdtIsMem)) {
         gadget.hllSketchImpl = source.copyAs(HLL_8).hllSketchImpl;
         return gadget.hllSketchImpl;
       }
       source.mergeTo(gadget);
-      gadget.putOutOfOrderFlag(true);
       return gadget.hllSketchImpl;
     }
-    //Hereafter, the srcImpl is in HLL mode.
+
+    //Hereafter, the source is in HLL mode.
     final int bit0 = gdtIsMem ? 1 : 0;
-    final int bits1_2 = (gadget.isEmpty() ? 3 : gadget.getCurMode().ordinal()) << 1;
+    final int bits1_2 = (gdtEmpty ? 3 : gadget.getCurMode().ordinal()) << 1;
     final int bit3 = (srcLgK < gadgetLgK) ? 8 : 0;
     final int bit4 = (srcLgK > lgMaxK) ? 16 : 0;
     final int sw = bit4 | bit3 | bits1_2 | bit0;
     HllSketchImpl hllSketchImpl = null; //never returned as null
     switch (sw) {
-      case 0: //src <= max, src >= gdt, gdtLIST, gdtHeap, reverse merge, no downsample, ooof=OR
-      case 8: //src <= max, src <  gdt, gdtLIST, gdtHeap, reverse merge, no downsample, ooof=OR
-      {
-        final HllSketch srcHll8Heap = source.copyAs(HLL_8);        //copy src to Heap
-        gadget.mergeTo(srcHll8Heap); //merge gdt(Hll8,heap,list) -> src(Hll8,heap,hll), autofold
-        final HllSketch gdtTmp = srcHll8Heap;                      //replace gdt
-        gdtTmp.putOutOfOrderFlag(gdtTmp.isOutOfOrderFlag() | source.isOutOfOrderFlag());
-        hllSketchImpl = gdtTmp.hllSketchImpl;
+      case 0: //src <= max, src >= gdt, gdtLIST, gdtHeap
+      case 8: //src <= max, src <  gdt, gdtLIST, gdtHeap
+      case 2: //src <= max, src >= gdt, gdtSET,  gdtHeap
+      case 10://src <= max, src <  gdt, gdtSET,  gdtHeap
+      { //Action: copy src, reverse merge w/autofold, ooof=src
+        final HllSketch srcHll8Heap = source.copyAs(HLL_8);
+        gadget.mergeTo(srcHll8Heap); //merge gdt(Hll8,heap,list/set) -> src(Hll8,heap,hll)
+        hllSketchImpl = srcHll8Heap.hllSketchImpl;
         break;
       }
-      case 1: //src <= max, src >= gdt, gdtLIST, gdtMemory, reverse merge, no downsample, ooof=OR
-      case 9: //src <= max, src <  gdt, gdtLIST, gdtMemory, reverse merge, no downsample, ooof=OR
-      {
-        final HllSketch srcHll8Heap = source.copyAs(HLL_8);        //copy src to Heap
-        gadget.mergeTo(srcHll8Heap);  //merge gdt(Hll8,mem,list) -> src(Hll8,heap,hll), autofold
-        final WritableMemory wmem = gadget.getWritableMemory();    //use the gdt wmem
-        final byte[] byteArr = srcHll8Heap.toUpdatableByteArray(); //serialize srcCopy
-        wmem.putByteArray(0, byteArr, 0, byteArr.length);          //replace old data with new
-        final HllSketch gdtTmp = HllSketch.writableWrap(wmem);     //wrap & replace gdt
-        gdtTmp.putOutOfOrderFlag(gdtTmp.isOutOfOrderFlag() | source.isOutOfOrderFlag());
-        hllSketchImpl = gdtTmp.hllSketchImpl;
+      case 16://src >  max, src >= gdt, gdtList, gdtHeap
+      case 18://src >  max, src >= gdt, gdtSet,  gdtHeap
+      { //Action: downsample src to MaxLgK, reverse merge w/autofold, ooof=src
+        final HllSketch srcHll8Heap = downsample(source, lgMaxK);
+        gadget.mergeTo(srcHll8Heap); //merge gdt(Hll8,heap,list/set) -> src(Hll8,heap,hll)
+        hllSketchImpl = srcHll8Heap.hllSketchImpl;
         break;
       }
-      case 2:  //src <= max, src >= gdt, gdtSET, gdtHeap, reverse merge, no downsample, ooof=True
-      case 10: //src <= max, src <  gdt, gdtSET, gdtHeap, reverse merge, no downsample, ooof=True
-      {
-        final HllSketch srcHll8Heap = source.copyAs(HLL_8);        //copy src to Heap
-        gadget.mergeTo(srcHll8Heap); //merge gdt(Hll8,heap,set) -> src(Hll8,heap,hll), autofold
-        final HllSketch gdtTmp = srcHll8Heap;                      //replace gdt
-        gdtTmp.putOutOfOrderFlag(true);
-        hllSketchImpl = gdtTmp.hllSketchImpl;
+
+      case 1: //src <= max, src >= gdt, gdtLIST, gdtMemory
+      case 9: //src <= max, src <  gdt, gdtLIST, gdtMemory
+      case 3: //src <= max, src >= gdt, gdtSET,  gdtMemory
+      case 11://src <= max, src <  gdt, gdtSET,  gdtMemory
+      { //Action: copy src, reverse merge w/autofold, use gdt memory, ooof=src
+        final HllSketch srcHll8Heap = source.copyAs(HLL_8);
+        gadget.mergeTo(srcHll8Heap);  //merge gdt(Hll8,mem,list/set) -> src(Hll8,heap,hll)
+        hllSketchImpl = useGadgetMemory(gadget, srcHll8Heap, false).hllSketchImpl;
         break;
       }
-      case 3:  //src <= max, src >= gdt, gdtSET, gdtMemory, reverse merge, no downsample, ooof=True
-      case 11: //src <= max, src <  gdt, gdtSET, gdtMemory, reverse merge, no downsample, ooof=True
-      {
-        final HllSketch srcHll8Heap = source.copyAs(HLL_8);        //copy src to Heap
-        gadget.mergeTo(srcHll8Heap); //merge gdt(Hll8,mem,set) -> src(Hll8,heap,hll), autofold
-        final WritableMemory wmem = gadget.getWritableMemory();    //use the gdt wmem
-        final byte[] byteArr = srcHll8Heap.toUpdatableByteArray(); //serialize srcCopy
-        wmem.putByteArray(0, byteArr, 0, byteArr.length);          //replace old data with new
-        final HllSketch gdtTmp = HllSketch.writableWrap(wmem);     //wrap & replace gdt
-        gdtTmp.putOutOfOrderFlag(true);
-        hllSketchImpl = gdtTmp.hllSketchImpl;
+      case 17://src >  max, src >= gdt, gdtList, gdtMemory
+      case 19://src >  max, src >= gdt, gdtSet,  gdtMemory
+      { //Action: downsample src to MaxLgK, reverse merge w/autofold, use gdt memory, ooof=src
+        final HllSketch srcHll8Heap = downsample(source, lgMaxK);
+        gadget.mergeTo(srcHll8Heap); //merge gdt(Hll8,mem,list/set) -> src(Hll8,heap,hll), autofold
+        hllSketchImpl = useGadgetMemory(gadget, srcHll8Heap, false).hllSketchImpl;
         break;
       }
-      case 4:  //src <= max, src >= gdt, gdtHLL, gdtHeap, forward merge, no downsample, ooof=True
-      case 20: //src >  max, src >= gdt, gdtHLL, gdtHeap, forward merge, no downsample, ooof=True
-      case 5:  //src <= max, src >= gdt, gdtHLL, gdtMemory, forward merge, no downsample, ooof=True
-      case 21: //src >  max, src >= gdt, gdtHLL, gdtMemory, forward merge, no downsample, ooof=True
-      {
-        //merge src(Hll4,6,8,heap/mem,Mode=HLL) -> gdt(Hll8,heap,Mode=HLL), may autofold
+
+      case 4: //src <= max, src >= gdt, gdtHLL, gdtHeap
+      case 20://src >  max, src >= gdt, gdtHLL, gdtHeap
+      case 5: //src <= max, src >= gdt, gdtHLL, gdtMemory
+      case 21://src >  max, src >= gdt, gdtHLL, gdtMemory
+      { //Action: forward HLL merge w/autofold, ooof=True
+        //merge src(Hll4,6,8,heap/mem,Mode=HLL) -> gdt(Hll8,heap,Mode=HLL)
         mergeHlltoHLLmode(source, gadget, srcLgK, gadgetLgK, srcIsMem, gdtIsMem);
-        gadget.putOutOfOrderFlag(true);
-        hllSketchImpl = gadget.hllSketchImpl;
+        hllSketchImpl = gadget.putOutOfOrderFlag(true).hllSketchImpl;
         break;
       }
-      case 6:  //src <= max, src >= gdt, gdtEmpty, gdtHeap, replace, no downsample, ooof=Src
-      case 14: //src <= max, src <  gdt, gdtEmpty, gdtHeap, replace, no downsample, ooof=Src
-      {
-        final HllSketch srcHll8Heap = source.copyAs(HLL_8);        //copy src to Heap
-        //ooof is already what source is.
-        hllSketchImpl = srcHll8Heap.hllSketchImpl;
-        break;
-      }
-      case 7:  //src <= max, src >= gdt, gdtEmpty, gdtMemory, replace mem, no downsample, ooof=Src
-      case 15: //src <= max, src <  gdt, gdtEmpty, gdtMemory, replace mem, no downsample, ooof=Src
-      {
-        final HllSketch srcHll8Heap = source.copyAs(HLL_8);        //copy src to Heap
-        final WritableMemory wmem = gadget.getWritableMemory();    //use the gdt wmem
-        final byte[] byteArr = srcHll8Heap.toUpdatableByteArray(); //serialize srcCopy
-        wmem.putByteArray(0, byteArr, 0, byteArr.length);          //replace old data with new
-        final HllSketch gdtTmp = HllSketch.writableWrap(wmem);     //wrap & replace gdt
-        //ooof is already what source is.
-        hllSketchImpl = gdtTmp.hllSketchImpl;
-        break;
-      }
-      case 12: //src <= max, src <  gdt, gdtHLL, gdtHeap, fwd merge/repl, downsample Gdt, ooof=True
-      {
-        final HllSketch gdtHll8Heap = downsample(gadget, srcLgK);  //downsample gdt to srcLgK
+      case 12://src <= max, src <  gdt, gdtHLL, gdtHeap
+      { //Action: downsample gdt to srcLgK, forward HLL merge w/autofold, ooof=True
+        final HllSketch gdtHll8Heap = downsample(gadget, srcLgK);
         //merge src(Hll4,6,8;heap/mem,Mode=HLL) -> gdt(Hll8,heap,hll)
         mergeHlltoHLLmode(source, gdtHll8Heap, srcLgK, gadgetLgK, srcIsMem, false);
-        gdtHll8Heap.putOutOfOrderFlag(true);
-        hllSketchImpl = gdtHll8Heap.hllSketchImpl;
+        hllSketchImpl = gdtHll8Heap.putOutOfOrderFlag(true).hllSketchImpl;
         break;
       }
-      case 13: //src <= max, src < gdt, gdtHLL, gdtMemory, fwd merge/repl mem, downsample Gdt, ooof=True
-      {
-        final HllSketch gdtHll8Heap = downsample(gadget, srcLgK);  //downsample gdt to srcLgK
+      case 13://src <= max, src < gdt, gdtHLL, gdtMemory
+      { //Action: downsample gdt to srcLgK, forward HLL merge w/autofold, use gdt memory, ooof=True
+        final HllSketch gdtHll8Heap = downsample(gadget, srcLgK);
         //merge src(Hll4,6,8;heap/mem;Mode=HLL) -> gdt(Hll8,heap,Mode=HLL)
         mergeHlltoHLLmode(source, gdtHll8Heap, srcLgK, gadgetLgK, srcIsMem, false);
-        final WritableMemory wmem = gadget.getWritableMemory();    //use the gdt wmem
-        final byte[] byteArr = gdtHll8Heap.toUpdatableByteArray(); //serialize gdtCopy
-        wmem.putByteArray(0, byteArr, 0, byteArr.length);          //replace old data with new
-        final HllSketch gdtTmp = HllSketch.writableWrap(wmem);     //wrap & replace gdt
-        gdtTmp.putOutOfOrderFlag(true);
-        hllSketchImpl = gdtTmp.hllSketchImpl;
-        break;
-      }
-      case 16: //src >  max, src >= gdt, gdtList,  gdtHeap, reverse merge, downsample Src, ooof=OR
-      {
-        final HllSketch srcHll8Heap = downsample(source, lgMaxK);  //downsample src to Max
-        gadget.mergeTo(srcHll8Heap); //merge gdt(Hll8,heap,list) -> src(Hll8,heap,hll)
-        final HllSketch gdtTmp = srcHll8Heap;                      //replace gdt
-        gdtTmp.putOutOfOrderFlag(gdtTmp.isOutOfOrderFlag() | source.isOutOfOrderFlag());
-        hllSketchImpl = gdtTmp.hllSketchImpl;
+        hllSketchImpl = useGadgetMemory(gadget, gdtHll8Heap, true).hllSketchImpl;
         break;
       }
-      case 17: //src > max, src >= gdt, gdtList, gdtMemory, rev merge/repl mem, downsample Src, ooof=OR
-      {
-        final HllSketch srcHll8Heap = downsample(source, lgMaxK);  //downsample src to Max
-        gadget.mergeTo(srcHll8Heap); //merge gdt(Hll8,mem,list) -> src(Hll8,heap,hll)
-        final WritableMemory wmem = gadget.getWritableMemory();    //use the gdt wmem
-        final byte[] byteArr = srcHll8Heap.toUpdatableByteArray(); //serialize srcCopy
-        wmem.putByteArray(0, byteArr, 0, byteArr.length);          //replace old data with new
-        final HllSketch gdtTmp = HllSketch.writableWrap(wmem);     //wrap & replace gdt
-        gdtTmp.putOutOfOrderFlag(gdtTmp.isOutOfOrderFlag() | source.isOutOfOrderFlag());
-        hllSketchImpl = gdtTmp.hllSketchImpl;
-        break;
-      }
-      case 18: //src > max, src >= gdt, gdtSet, gdtHeap, rev merge, downsample Src, ooof=True
-      {
-        final HllSketch srcHll8Heap = downsample(source, lgMaxK);  //downsample src to Max
-        gadget.mergeTo(srcHll8Heap); //merge gdt(Hll8,heap,set) -> src(Hll8,heap,hll)
-        final HllSketch gdtTmp = srcHll8Heap;                      //replace gdt
-        gdtTmp.putOutOfOrderFlag(true);
-        hllSketchImpl = gdtTmp.hllSketchImpl;
+
+      case 6: //src <= max, src >= gdt, gdtEmpty, gdtHeap
+      case 14://src <= max, src <  gdt, gdtEmpty, gdtHeap
+      { //Action: copy src, replace gdt, ooof=src
+        final HllSketch srcHll8Heap = source.copyAs(HLL_8);
+        hllSketchImpl = srcHll8Heap.hllSketchImpl;
         break;
       }
-      case 19: //src > max, src >= gdt, gdtSet, gdtMemory, rev merge/rep mem, downsample Src, ooof=True
-      {
-        final HllSketch srcHll8Heap = downsample(source, lgMaxK);  //downsample src to Max
-        gadget.mergeTo(srcHll8Heap); //merge gdt(Hll8,mem,set) -> src(Hll8,heap,hll)
-        final WritableMemory wmem = gadget.getWritableMemory();    //use the gdt wmem
-        final byte[] byteArr = srcHll8Heap.toUpdatableByteArray(); //serialize srcCopy
-        wmem.putByteArray(0, byteArr, 0, byteArr.length);          //replace old data with new
-        final HllSketch gdtTmp = HllSketch.writableWrap(wmem);     //wrap & replace gdt
-        gdtTmp.putOutOfOrderFlag(true);
-        hllSketchImpl = gdtTmp.hllSketchImpl;
+      case 22://src >  max, src >= gdt, gdtEmpty, gdtHeap
+      { //Action: downsample src to lgMaxK, replace gdt, ooof=src
+        final HllSketch srcHll8Heap = downsample(source, lgMaxK);
+        hllSketchImpl = srcHll8Heap.hllSketchImpl;
         break;
       }
-      case 22: //src >  max, src >= gdt, gdtEmpty, gdtHeap, replace, downsample Src, ooof=Src
-      {
-        final HllSketch srcHll8Heap = downsample(source, lgMaxK);  //downsample src to Max
-        hllSketchImpl = srcHll8Heap.hllSketchImpl;                 //replace gdt
-        //ooof is already what source is.
+
+      case 7: //src <= max, src >= gdt, gdtEmpty, gdtMemory
+      case 15://src <= max, src <  gdt, gdtEmpty, gdtMemory
+      { //Action: copy src, use gdt memory, ooof=src
+        final HllSketch srcHll8Heap = source.copyAs(HLL_8);
+        hllSketchImpl = useGadgetMemory(gadget, srcHll8Heap, false).hllSketchImpl;
         break;
       }
-      case 23: //src >  max, src >= gdt, gdtEmpty, gdtMemory, replace mem, downsample Src, ooof=Src
-      {
-        final HllSketch srcHll8Heap = downsample(source, lgMaxK);  //downsample src to Max
-        final WritableMemory wmem = gadget.getWritableMemory();    //use the gdt wmem
-        final byte[] byteArr = srcHll8Heap.toUpdatableByteArray(); //serialize srcCopy
-        wmem.putByteArray(0, byteArr, 0, byteArr.length);          //replace old data with new
-        hllSketchImpl = HllSketch.writableWrap(wmem).hllSketchImpl;//wrap & replace gdt
-        //ooof is already what source is.
+      case 23://src >  max, src >= gdt, gdtEmpty, gdtMemory, replace mem, downsample src, ooof=src
+      { //Action: downsample src to lgMaxK, use gdt memory, ooof=src
+        final HllSketch srcHll8Heap = downsample(source, lgMaxK);
+        hllSketchImpl = useGadgetMemory(gadget, srcHll8Heap, false).hllSketchImpl;
         break;
       }
       //default: return gadget.hllSketchImpl; //not possible
@@ -550,7 +489,17 @@ public class Union extends BaseHllSketch {
     return hllSketchImpl;
   }
 
-  private static void mergeHlltoHLLmode(final HllSketch src, final HllSketch tgt,
+  private static final HllSketch useGadgetMemory(
+      final HllSketch gadget, final HllSketch hll8Heap, final boolean setOooFlag) {
+    final WritableMemory wmem = gadget.getWritableMemory();    //use the gdt wmem
+    final byte[] byteArr = hll8Heap.toUpdatableByteArray();    //serialize srcCopy
+    wmem.putByteArray(0, byteArr, 0, byteArr.length);          //replace old data with new
+    return (setOooFlag)
+        ? HllSketch.writableWrap(wmem).putOutOfOrderFlag(true) //wrap, set oooflag, return
+        : HllSketch.writableWrap(wmem);                        //wrap & return
+  }
+
+  private static final void mergeHlltoHLLmode(final HllSketch src, final HllSketch tgt,
       final int srcLgK, final int tgtLgK, final boolean srcIsMem, final boolean tgtIsMem) {
       final int sw = (tgtIsMem ? 1 : 0) | (srcIsMem ? 2 : 0)
           | ((srcLgK > tgtLgK) ? 4 : 0) | ((src.getTgtHllType() != HLL_8) ? 8 : 0);
@@ -699,7 +648,7 @@ public class Union extends BaseHllSketch {
     }
     //both of these are required for isomorphism
     tgtHllArr.putHipAccum(candArr.getHipAccum());
-    tgtHllArr.putOutOfOrderFlag(candidate.isOutOfOrderFlag());
+    tgtHllArr.putOutOfOrder(candidate.isOutOfOrder());
     tgtHllArr.putRebuildCurMinNumKxQFlag(false);
     return new HllSketch(tgtHllArr);
   }
diff --git a/src/test/java/org/apache/datasketches/hll/DirectUnionTest.java b/src/test/java/org/apache/datasketches/hll/DirectUnionTest.java
index 386dcf2..d967747 100644
--- a/src/test/java/org/apache/datasketches/hll/DirectUnionTest.java
+++ b/src/test/java/org/apache/datasketches/hll/DirectUnionTest.java
@@ -220,9 +220,9 @@ public class DirectUnionTest {
     double controlEst = control.getEstimate();
     double controlUb = control.getUpperBound(2);
     double controlLb = control.getLowerBound(2);
-    String h1ooo = h1.isOutOfOrderFlag() ? "T" : "F";
-    String h2ooo = h2.isOutOfOrderFlag() ? "T" : "F";
-    String resultooo = result.isOutOfOrderFlag() ?  "T" : "F";
+    String h1ooo = h1.isOutOfOrder() ? "T" : "F";
+    String h2ooo = h2.isOutOfOrder() ? "T" : "F";
+    String resultooo = result.isOutOfOrder() ?  "T" : "F";
     String row = String.format(dataFmt,
         n1, n2, tot,
         lgMaxK, lgK1, lgK2, lgKR,
diff --git a/src/test/java/org/apache/datasketches/hll/UnionCaseTest.java b/src/test/java/org/apache/datasketches/hll/UnionCaseTest.java
index c6bf77c..35cc778 100644
--- a/src/test/java/org/apache/datasketches/hll/UnionCaseTest.java
+++ b/src/test/java/org/apache/datasketches/hll/UnionCaseTest.java
@@ -101,7 +101,7 @@ public class UnionCaseTest {
     double estU = union.getEstimate();
     double err = Math.abs((estU / totalU) - 1.0);
     int gdtLgK = union.getLgConfigK();
-    boolean uooof = union.isOutOfOrderFlag();
+    boolean uooof = union.isOutOfOrder();
     double rseFactor = (uooof) ? HLL_NON_HIP_RSE_FACTOR : HLL_HIP_RSE_FACTOR;
     double rse = (rseFactor * 3) / Math.sqrt(1 << gdtLgK); //99.7% conf
 
@@ -115,8 +115,8 @@ public class UnionCaseTest {
     String gdtMem = Boolean.toString(union.isMemory());
     String srcMode = source.getCurMode().toString();
     String gdtMode = union.getCurMode().toString();
-    String srcOoof = Boolean.toString(source.isOutOfOrderFlag());
-    String gdtOoof = Boolean.toString(union.isOutOfOrderFlag());
+    String srcOoof = Boolean.toString(source.isOutOfOrder());
+    String gdtOoof = Boolean.toString(union.isOutOfOrder());
     printf(hfmt, caseNumStr, srcLgKStr, gdtLgKStr, srcType, gdtType, srcMem, gdtMem,
         srcMode, gdtMode, srcOoof, gdtOoof);
     assertTrue(err < rse, "Err: " + err + ", RSE: " + rse);
@@ -192,8 +192,8 @@ public class UnionCaseTest {
     println(u.toString());
     assertEquals(u.getCurMode(), LIST);
     assertEquals(u.getLgConfigK(), 12);
-    assertFalse(u.isOutOfOrderFlag());
-    double err = sum * errorFactor(u.getLgConfigK(), u.isOutOfOrderFlag(), 3.0);
+    assertFalse(u.isOutOfOrder());
+    double err = sum * errorFactor(u.getLgConfigK(), u.isOutOfOrder(), 3.0);
     println("ErrToll: " + err);
     assertEquals(u.getEstimate(), sum, err);
   }
@@ -214,8 +214,8 @@ public class UnionCaseTest {
     println(u.toString());
     assertEquals(u.getCurMode(), SET);
     assertEquals(u.getLgConfigK(), 12);
-    assertTrue(u.isOutOfOrderFlag());
-    double err = sum * errorFactor(u.getLgConfigK(), u.isOutOfOrderFlag(), 3.0);
+    assertFalse(u.isOutOfOrder());
+    double err = sum * errorFactor(u.getLgConfigK(), u.isOutOfOrder(), 3.0);
     println("ErrToll: " + err);
     assertEquals(u.getEstimate(), sum, err);
   }
@@ -236,8 +236,8 @@ public class UnionCaseTest {
     println(u.toString());
     assertEquals(u.getCurMode(), SET);
     assertEquals(u.getLgConfigK(), 12);
-    assertTrue(u.isOutOfOrderFlag());
-    double err = sum * errorFactor(u.getLgConfigK(), u.isOutOfOrderFlag(), 3.0);
+    assertFalse(u.isOutOfOrder());
+    double err = sum * errorFactor(u.getLgConfigK(), u.isOutOfOrder(), 3.0);
     println("ErrToll: " + err);
     assertEquals(u.getEstimate(), sum, err);
   }
@@ -258,8 +258,8 @@ public class UnionCaseTest {
     println(u.toString());
     assertEquals(u.getCurMode(), SET);
     assertEquals(u.getLgConfigK(), 12);
-    assertTrue(u.isOutOfOrderFlag());
-    double err = sum * errorFactor(u.getLgConfigK(), u.isOutOfOrderFlag(), 3.0);
+    assertFalse(u.isOutOfOrder());
+    double err = sum * errorFactor(u.getLgConfigK(), u.isOutOfOrder(), 3.0);
     println("ErrToll: " + err);
     assertEquals(u.getEstimate(), sum, err);
   }
@@ -280,8 +280,8 @@ public class UnionCaseTest {
     println(u.toString());
     assertEquals(u.getCurMode(), LIST);
     assertEquals(u.getLgConfigK(), 12);
-    assertFalse(u.isOutOfOrderFlag());
-    double err = sum * errorFactor(u.getLgConfigK(), u.isOutOfOrderFlag(), 3.0);
+    assertFalse(u.isOutOfOrder());
+    double err = sum * errorFactor(u.getLgConfigK(), u.isOutOfOrder(), 3.0);
     println("ErrToll: " + err);
     assertEquals(u.getEstimate(), sum, err);
   }
@@ -302,8 +302,8 @@ public class UnionCaseTest {
     println(u.toString());
     assertEquals(u.getCurMode(), SET);
     assertEquals(u.getLgConfigK(), 12);
-    assertTrue(u.isOutOfOrderFlag());
-    double err = sum * errorFactor(u.getLgConfigK(), u.isOutOfOrderFlag(), 3.0);
+    assertFalse(u.isOutOfOrder());
+    double err = sum * errorFactor(u.getLgConfigK(), u.isOutOfOrder(), 3.0);
     println("ErrToll: " + err);
     assertEquals(u.getEstimate(), sum, err);
   }
diff --git a/src/test/java/org/apache/datasketches/hll/UnionTest.java b/src/test/java/org/apache/datasketches/hll/UnionTest.java
index e465554..2d4bf5c 100644
--- a/src/test/java/org/apache/datasketches/hll/UnionTest.java
+++ b/src/test/java/org/apache/datasketches/hll/UnionTest.java
@@ -219,9 +219,9 @@ public class UnionTest {
     double controlEst = control.getEstimate();
     double controlUb = control.getUpperBound(2);
     double controlLb = control.getLowerBound(2);
-    String h1ooo = h1.isOutOfOrderFlag() ? "T" : "F";
-    String h2ooo = h2.isOutOfOrderFlag() ? "T" : "F";
-    String resultooo = result.isOutOfOrderFlag() ?  "T" : "F";
+    String h1ooo = h1.isOutOfOrder() ? "T" : "F";
+    String h2ooo = h2.isOutOfOrder() ? "T" : "F";
+    String resultooo = result.isOutOfOrder() ?  "T" : "F";
     String row = String.format(dataFmt,
         n1, n2, tot,
         lgMaxK, lgK1, lgK2, lgKR,


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org