Fixed all (I think) of the CodeQL issues.  A number of them were false
positives or not worth fixing: like restructuring the methods of the
ArrayOfNumbersSerDe to use the Visitor Pattern.  That is just too much
work, generates a whole slew of subclasses which would probably be
slower.

There may be a few CodeQL issues I didn't catch, which this push may
reveal. Then I'll deal with those.
diff --git a/src/main/java/org/apache/datasketches/common/ArrayOfDoublesSerDe.java b/src/main/java/org/apache/datasketches/common/ArrayOfDoublesSerDe.java
index a22bff4..1e2f110 100644
--- a/src/main/java/org/apache/datasketches/common/ArrayOfDoublesSerDe.java
+++ b/src/main/java/org/apache/datasketches/common/ArrayOfDoublesSerDe.java
@@ -66,7 +66,7 @@
     Objects.requireNonNull(mem, "Memory must not be null");
     if (numItems <= 0) { return new Double[0]; }
     long offset = offsetBytes;
-    Util.checkBounds(offset, Double.BYTES * numItems, mem.getCapacity());
+    Util.checkBounds(offset, Double.BYTES * (long)numItems, mem.getCapacity());
     final Double[] array = new Double[numItems];
 
     for (int i = 0; i < numItems; i++) {
diff --git a/src/main/java/org/apache/datasketches/common/ArrayOfLongsSerDe.java b/src/main/java/org/apache/datasketches/common/ArrayOfLongsSerDe.java
index 2a96db1..f292ba0 100644
--- a/src/main/java/org/apache/datasketches/common/ArrayOfLongsSerDe.java
+++ b/src/main/java/org/apache/datasketches/common/ArrayOfLongsSerDe.java
@@ -66,7 +66,7 @@
     Objects.requireNonNull(mem, "Memory must not be null");
     if (numItems <= 0) { return new Long[0]; }
     long offset = offsetBytes;
-    Util.checkBounds(offset, Long.BYTES * numItems, mem.getCapacity());
+    Util.checkBounds(offset, Long.BYTES * (long)numItems, mem.getCapacity());
     final Long[] array = new Long[numItems];
     for (int i = 0; i < numItems; i++) {
       array[i] = mem.getLong(offset);
diff --git a/src/main/java/org/apache/datasketches/common/ArrayOfStringsSerDe.java b/src/main/java/org/apache/datasketches/common/ArrayOfStringsSerDe.java
index 6c4354f..2bbe39e 100644
--- a/src/main/java/org/apache/datasketches/common/ArrayOfStringsSerDe.java
+++ b/src/main/java/org/apache/datasketches/common/ArrayOfStringsSerDe.java
@@ -126,7 +126,7 @@
   @Override
   public String toString(final String item) {
     if (item == null) { return "null"; }
-    return item.toString();
+    return item;
   }
 
   @Override
diff --git a/src/main/java/org/apache/datasketches/common/ArrayOfUtf16StringsSerDe.java b/src/main/java/org/apache/datasketches/common/ArrayOfUtf16StringsSerDe.java
index bc6c400..80afa78 100644
--- a/src/main/java/org/apache/datasketches/common/ArrayOfUtf16StringsSerDe.java
+++ b/src/main/java/org/apache/datasketches/common/ArrayOfUtf16StringsSerDe.java
@@ -120,7 +120,7 @@
   @Override
   public String toString(final String item) {
     if (item == null) { return "null"; }
-    return item.toString();
+    return item;
   }
 
   @Override
diff --git a/src/main/java/org/apache/datasketches/kll/KllDirectDoublesSketch.java b/src/main/java/org/apache/datasketches/kll/KllDirectDoublesSketch.java
index ed20df6..58438c0 100644
--- a/src/main/java/org/apache/datasketches/kll/KllDirectDoublesSketch.java
+++ b/src/main/java/org/apache/datasketches/kll/KllDirectDoublesSketch.java
@@ -73,7 +73,7 @@
       final WritableMemory wmem,
       final MemoryRequestServer memReqSvr,
       final KllMemoryValidate memVal) {
-    super(sketchStructure, wmem);
+    super(sketchStructure);
     this.wmem = wmem;
     this.memReqSvr = memReqSvr;
     readOnly = (wmem != null && wmem.isReadOnly()) || sketchStructure != UPDATABLE;
diff --git a/src/main/java/org/apache/datasketches/kll/KllDirectFloatsSketch.java b/src/main/java/org/apache/datasketches/kll/KllDirectFloatsSketch.java
index a23a33b..6e97023 100644
--- a/src/main/java/org/apache/datasketches/kll/KllDirectFloatsSketch.java
+++ b/src/main/java/org/apache/datasketches/kll/KllDirectFloatsSketch.java
@@ -73,7 +73,7 @@
       final WritableMemory wmem,
       final MemoryRequestServer memReqSvr,
       final KllMemoryValidate memVal) {
-    super(sketchStructure, wmem);
+    super(sketchStructure);
     this.wmem = wmem;
     this.memReqSvr = memReqSvr;
     readOnly = (wmem != null && wmem.isReadOnly()) || sketchStructure != UPDATABLE;
diff --git a/src/main/java/org/apache/datasketches/kll/KllDoublesSketch.java b/src/main/java/org/apache/datasketches/kll/KllDoublesSketch.java
index 76c2ed3..ba1737f 100644
--- a/src/main/java/org/apache/datasketches/kll/KllDoublesSketch.java
+++ b/src/main/java/org/apache/datasketches/kll/KllDoublesSketch.java
@@ -51,8 +51,7 @@
   final static int ITEM_BYTES = Double.BYTES;
 
   KllDoublesSketch(
-      final SketchStructure sketchStructure,
-      final WritableMemory wmem) {
+      final SketchStructure sketchStructure) {
     super(SketchType.DOUBLES_SKETCH, sketchStructure);
   }
 
diff --git a/src/main/java/org/apache/datasketches/kll/KllFloatsSketch.java b/src/main/java/org/apache/datasketches/kll/KllFloatsSketch.java
index 6f81d24..69fd9da 100644
--- a/src/main/java/org/apache/datasketches/kll/KllFloatsSketch.java
+++ b/src/main/java/org/apache/datasketches/kll/KllFloatsSketch.java
@@ -51,8 +51,7 @@
   final static int ITEM_BYTES = Float.BYTES;
 
   KllFloatsSketch(
-      final SketchStructure sketchStructure,
-      final WritableMemory wmem) {
+      final SketchStructure sketchStructure) {
     super(SketchType.FLOATS_SKETCH, sketchStructure);
   }
 
diff --git a/src/main/java/org/apache/datasketches/kll/KllHeapDoublesSketch.java b/src/main/java/org/apache/datasketches/kll/KllHeapDoublesSketch.java
index 205fdc9..1e79026 100644
--- a/src/main/java/org/apache/datasketches/kll/KllHeapDoublesSketch.java
+++ b/src/main/java/org/apache/datasketches/kll/KllHeapDoublesSketch.java
@@ -66,7 +66,7 @@
    * experimental as they have not been as well characterized.
    */
   KllHeapDoublesSketch(final int k, final int m) {
-    super(UPDATABLE, null);
+    super(UPDATABLE);
     KllHelper.checkM(m);
     KllHelper.checkK(k, m);
     this.levelsArr = new int[] {k, k};
@@ -89,7 +89,7 @@
   private KllHeapDoublesSketch(
       final Memory srcMem,
       final KllMemoryValidate memValidate) {
-    super(UPDATABLE, null);
+    super(UPDATABLE);
     final SketchStructure memStructure = memValidate.sketchStructure;
     this.k = memValidate.k;
     this.m = memValidate.m;
diff --git a/src/main/java/org/apache/datasketches/kll/KllHeapFloatsSketch.java b/src/main/java/org/apache/datasketches/kll/KllHeapFloatsSketch.java
index 348326b..941416c 100644
--- a/src/main/java/org/apache/datasketches/kll/KllHeapFloatsSketch.java
+++ b/src/main/java/org/apache/datasketches/kll/KllHeapFloatsSketch.java
@@ -66,7 +66,7 @@
    * experimental as they have not been as well characterized.
    */
   KllHeapFloatsSketch(final int k, final int m) {
-    super(UPDATABLE, null);
+    super(UPDATABLE);
     KllHelper.checkM(m);
     KllHelper.checkK(k, m);
     this.levelsArr = new int[] {k, k};
@@ -89,7 +89,7 @@
   private KllHeapFloatsSketch(
       final Memory srcMem,
       final KllMemoryValidate memValidate) {
-    super(UPDATABLE, null);
+    super(UPDATABLE);
     final SketchStructure memStructure = memValidate.sketchStructure;
     this.k = memValidate.k;
     this.m = memValidate.m;
diff --git a/src/main/java/org/apache/datasketches/kll/KllPreambleUtil.java b/src/main/java/org/apache/datasketches/kll/KllPreambleUtil.java
index 7067e03..8fecc61 100644
--- a/src/main/java/org/apache/datasketches/kll/KllPreambleUtil.java
+++ b/src/main/java/org/apache/datasketches/kll/KllPreambleUtil.java
@@ -199,7 +199,6 @@
    *
    * @param mem the given Memory
    * @param includeData if true, includes detail of retained data.
-   * @param serDe the serialization/deserialization class, required for KllItemsSketch.
    * @return the summary string.
    */
   static String toString(final Memory mem, final SketchType sketchType, final boolean includeData) {
diff --git a/src/main/java/org/apache/datasketches/kll/KllSketch.java b/src/main/java/org/apache/datasketches/kll/KllSketch.java
index 9ef0048..f591ecd 100644
--- a/src/main/java/org/apache/datasketches/kll/KllSketch.java
+++ b/src/main/java/org/apache/datasketches/kll/KllSketch.java
@@ -315,7 +315,7 @@
   }
 
   int[] getLevelsArray(final SketchStructure structure) {
-    if (structure == UPDATABLE) { return levelsArr; }
+    if (structure == UPDATABLE) { return levelsArr.clone(); }
     else if (structure == COMPACT_FULL) { return Arrays.copyOf(levelsArr, levelsArr.length - 1); }
     else { return new int[0]; }
   }
diff --git a/src/main/java/org/apache/datasketches/quantiles/ItemsSketchSortedView.java b/src/main/java/org/apache/datasketches/quantiles/ItemsSketchSortedView.java
index a56ff70..70fdd31 100644
--- a/src/main/java/org/apache/datasketches/quantiles/ItemsSketchSortedView.java
+++ b/src/main/java/org/apache/datasketches/quantiles/ItemsSketchSortedView.java
@@ -53,7 +53,6 @@
    * @param cumWeights sorted, monotonically increasing cumulative weights.
    * @param totalN the total number of items presented to the sketch.
    * @param comparator comparator for type T
-   * @param T the given type
    */
   ItemsSketchSortedView(final T[] quantiles, final long[] cumWeights, final long totalN,
       final Comparator<T> comparator) {
diff --git a/src/test/java/org/apache/datasketches/common/ArrayOfXSerDeTest.java b/src/test/java/org/apache/datasketches/common/ArrayOfXSerDeTest.java
index 93a4952..bb3aa1e 100644
--- a/src/test/java/org/apache/datasketches/common/ArrayOfXSerDeTest.java
+++ b/src/test/java/org/apache/datasketches/common/ArrayOfXSerDeTest.java
@@ -203,7 +203,7 @@
     byteArr = serDe.serializeToByteArray(new String[] {item});
     assertEquals(byteArr.length, bytes);
     assertEquals(serDe.sizeOf(item), bytes);
-    assertEquals(serDe.toString(item), item.toString());
+    assertEquals(serDe.toString(item), item);
 
     wmem = WritableMemory.allocate(offset + byteArr.length);
     wmem.putByteArray(offset, byteArr, 0, byteArr.length);
@@ -247,7 +247,7 @@
     byteArr = serDe.serializeToByteArray(new String[] {item});
     assertEquals(byteArr.length, bytes);
     assertEquals(serDe.sizeOf(item), bytes);
-    assertEquals(serDe.toString(item), item.toString());
+    assertEquals(serDe.toString(item), item);
 
     wmem = WritableMemory.allocate(offset + byteArr.length);
     wmem.putByteArray(offset, byteArr, 0, byteArr.length);
diff --git a/src/test/java/org/apache/datasketches/frequencies/SerDeCompatibilityTest.java b/src/test/java/org/apache/datasketches/frequencies/SerDeCompatibilityTest.java
index 9cd2b39..a492b4c 100644
--- a/src/test/java/org/apache/datasketches/frequencies/SerDeCompatibilityTest.java
+++ b/src/test/java/org/apache/datasketches/frequencies/SerDeCompatibilityTest.java
@@ -20,7 +20,6 @@
 package org.apache.datasketches.frequencies;
 
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
 
 import java.io.FileOutputStream;
diff --git a/src/test/java/org/apache/datasketches/kll/KllDirectDoublesSketchTest.java b/src/test/java/org/apache/datasketches/kll/KllDirectDoublesSketchTest.java
index d445391..5d87388 100644
--- a/src/test/java/org/apache/datasketches/kll/KllDirectDoublesSketchTest.java
+++ b/src/test/java/org/apache/datasketches/kll/KllDirectDoublesSketchTest.java
@@ -277,16 +277,14 @@
     assertEquals(sketch2.getMaxItem(), 1_000_000);
   }
 
-  @SuppressWarnings("unused")
   @Test(expectedExceptions = SketchesArgumentException.class)
   public void kTooSmall() {
-    final KllDoublesSketch sketch1 = getUpdatableDirectDoublesSketch(KllSketch.DEFAULT_M - 1, 0);
+    getUpdatableDirectDoublesSketch(KllSketch.DEFAULT_M - 1, 0);
   }
 
-  @SuppressWarnings("unused")
   @Test(expectedExceptions = SketchesArgumentException.class)
   public void kTooLarge() {
-    final KllDoublesSketch sketch1 = getUpdatableDirectDoublesSketch(KllSketch.MAX_K + 1, 0);
+    getUpdatableDirectDoublesSketch(KllSketch.MAX_K + 1, 0);
   }
 
   @Test
diff --git a/src/test/java/org/apache/datasketches/kll/KllDirectFloatsSketchTest.java b/src/test/java/org/apache/datasketches/kll/KllDirectFloatsSketchTest.java
index 7d2c24d..7be56d7 100644
--- a/src/test/java/org/apache/datasketches/kll/KllDirectFloatsSketchTest.java
+++ b/src/test/java/org/apache/datasketches/kll/KllDirectFloatsSketchTest.java
@@ -277,16 +277,14 @@
     assertEquals(sketch2.getMaxItem(), 1_000_000F);
   }
 
-  @SuppressWarnings("unused")
   @Test(expectedExceptions = SketchesArgumentException.class)
   public void kTooSmall() {
-    final KllFloatsSketch sketch1 = getUpdatableDirectFloatSketch(KllSketch.DEFAULT_M - 1, 0);
+    getUpdatableDirectFloatSketch(KllSketch.DEFAULT_M - 1, 0);
   }
 
-  @SuppressWarnings("unused")
   @Test(expectedExceptions = SketchesArgumentException.class)
   public void kTooLarge() {
-    final KllFloatsSketch sketch1 = getUpdatableDirectFloatSketch(KllSketch.MAX_K + 1, 0);
+    getUpdatableDirectFloatSketch(KllSketch.MAX_K + 1, 0);
   }
 
   @Test
diff --git a/src/test/java/org/apache/datasketches/kll/KllItemsSketchTest.java b/src/test/java/org/apache/datasketches/kll/KllItemsSketchTest.java
index 21e377c..b11efe8 100644
--- a/src/test/java/org/apache/datasketches/kll/KllItemsSketchTest.java
+++ b/src/test/java/org/apache/datasketches/kll/KllItemsSketchTest.java
@@ -166,7 +166,7 @@
       final double trueRank = (double) i / n;
       String s = Util.intToFixedLengthString(i, digits);
       double r = sketch.getRank(s);
-      assertEquals(sketch.getRank(s), trueRank, PMF_EPS_FOR_K_256, "for value " + s);
+      assertEquals(r, trueRank, PMF_EPS_FOR_K_256, "for value " + s);
     }
 
     // test getPMF
diff --git a/src/test/java/org/apache/datasketches/quantilescommon/CrossCheckQuantilesTest.java b/src/test/java/org/apache/datasketches/quantilescommon/CrossCheckQuantilesTest.java
index 3efaacc..0da1d90 100644
--- a/src/test/java/org/apache/datasketches/quantilescommon/CrossCheckQuantilesTest.java
+++ b/src/test/java/org/apache/datasketches/quantilescommon/CrossCheckQuantilesTest.java
@@ -32,6 +32,7 @@
 import java.util.Comparator;
 
 import org.apache.datasketches.common.ArrayOfStringsSerDe;
+import org.apache.datasketches.common.SketchesArgumentException;
 import org.apache.datasketches.kll.KllDoublesSketch;
 import org.apache.datasketches.kll.KllDoublesSketchSortedView;
 import org.apache.datasketches.kll.KllFloatsSketch;
@@ -191,7 +192,9 @@
     }
 
     println("");
-    int maxItemValue = Integer.parseInt(getMaxItemValue(set));
+    int maxItemValue;
+    try { maxItemValue = Integer.parseInt(getMaxItemValue(set)); }
+    catch (NumberFormatException e) { throw new SketchesArgumentException(e.toString()); }
     for (int v = 5; v <= maxItemValue + 5; v += 5) {
       String s = intToFixedLengthString(v, 2);
       trueRank = getTrueItemRank(svCumWeights[set], svIValues[set], s, crit, comparator);
@@ -255,7 +258,7 @@
     String testIQ;
     for (int i = 0; i <= twoN; i++) {
       double normRank = i / dTwoN;
-      trueIQ = getTrueItemQuantile(svCumWeights[set], svIValues[set], normRank, crit, comparator);
+      trueIQ = getTrueItemQuantile(svCumWeights[set], svIValues[set], normRank, crit);
 
       testIQ = kllItemsSV.getQuantile(normRank, crit);
       assertEquals(testIQ, trueIQ);
diff --git a/src/test/java/org/apache/datasketches/quantilescommon/LinearRanksAndQuantiles.java b/src/test/java/org/apache/datasketches/quantilescommon/LinearRanksAndQuantiles.java
index 4772926..fd8885c 100644
--- a/src/test/java/org/apache/datasketches/quantilescommon/LinearRanksAndQuantiles.java
+++ b/src/test/java/org/apache/datasketches/quantilescommon/LinearRanksAndQuantiles.java
@@ -166,8 +166,7 @@
       final long[] cumWeights,
       final T[] quantiles,
       final double givenNormR,
-      final QuantileSearchCriteria inclusive,
-      final Comparator<? super T> comp) {
+      final QuantileSearchCriteria inclusive) {
     final int len = cumWeights.length;
     final long N = cumWeights[len - 1];
     T result = null;