diff --git a/src/main/java/org/apache/datasketches/req/ReqAuxiliary.java b/src/main/java/org/apache/datasketches/req/ReqAuxiliary.java
index daa0eed..06074af 100644
--- a/src/main/java/org/apache/datasketches/req/ReqAuxiliary.java
+++ b/src/main/java/org/apache/datasketches/req/ReqAuxiliary.java
@@ -166,7 +166,7 @@
     return new Row(items[index], weights[index]);
   }
 
-  class Row {
+  static class Row {
     float item;
     long weight;
 
diff --git a/src/test/java/org/apache/datasketches/req/ReqSketchOtherTest.java b/src/test/java/org/apache/datasketches/req/ReqSketchOtherTest.java
index 02352c7..6a09377 100644
--- a/src/test/java/org/apache/datasketches/req/ReqSketchOtherTest.java
+++ b/src/test/java/org/apache/datasketches/req/ReqSketchOtherTest.java
@@ -180,7 +180,7 @@
   public void checkEmpty() {
     final ReqSketchBuilder bldr = new ReqSketchBuilder();
     bldr.setLessThanOrEqual(false);
-    final ReqSketch sk = new ReqSketchBuilder().build();
+    final ReqSketch sk = bldr.build();
     assertEquals(sk.getRank(1f), Double.NaN);
     assertNull(sk.getRanks(new float[] { 1f }));
     assertEquals(sk.getQuantile(0.5), Float.NaN);
diff --git a/src/test/java/org/apache/datasketches/req/ReqSketchTest.java b/src/test/java/org/apache/datasketches/req/ReqSketchTest.java
index 8b1fdbd..27dfc3b 100644
--- a/src/test/java/org/apache/datasketches/req/ReqSketchTest.java
+++ b/src/test/java/org/apache/datasketches/req/ReqSketchTest.java
@@ -38,8 +38,8 @@
   private static final String LS = System.getProperty("line.separator");
 
   //To control debug printing:
-  private final int skDebug = 0; // sketch debug printing: 0 = none, 1 = summary, 2 = extensive detail
-  private final int iDebug = 0; // debug printing for individual tests below, same scale as above
+  private final static int skDebug = 0; // sketch debug printing: 0 = none, 1 = summary, 2 = extensive detail
+  private final static int iDebug = 0;  // debug printing for individual tests below, same scale as above
 
   @Test
   public void bigTest() {
diff --git a/src/test/java/org/apache/datasketches/tuple/MiscTest.java b/src/test/java/org/apache/datasketches/tuple/MiscTest.java
index 1863930..284c1c6 100644
--- a/src/test/java/org/apache/datasketches/tuple/MiscTest.java
+++ b/src/test/java/org/apache/datasketches/tuple/MiscTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.datasketches.tuple;
 
+import static org.testng.Assert.assertTrue;
+
 import org.apache.datasketches.tuple.adouble.DoubleSummary;
 import org.apache.datasketches.tuple.adouble.DoubleSummary.Mode;
 import org.apache.datasketches.tuple.adouble.DoubleSummaryFactory;
@@ -34,9 +36,11 @@
   @Test
   public void checkUpdatableSketchBuilderReset() {
     final DoubleSummary.Mode mode = Mode.Sum;
-    UpdatableSketchBuilder<Double, DoubleSummary> bldr =
+    final UpdatableSketchBuilder<Double, DoubleSummary> bldr =
         new UpdatableSketchBuilder<>(new DoubleSummaryFactory(mode));
     bldr.reset();
+    final UpdatableSketch<Double,DoubleSummary> sk = bldr.build();
+    assertTrue(sk.isEmpty());
   }
 
   @Test
diff --git a/tools/FindBugsExcludeFilter.xml b/tools/FindBugsExcludeFilter.xml
index ee747b6..c0498e1 100644
--- a/tools/FindBugsExcludeFilter.xml
+++ b/tools/FindBugsExcludeFilter.xml
@@ -34,8 +34,8 @@
   <!-- False positive.  In this case we want to ignore the exceptions -->
   <Match>
     <Bug pattern="DE_MIGHT_IGNORE" />
-    <Class name="org.apache.datasketches.theta.PairwiseCornerCasesTest" />
-    <Method name="checkNotOrdered" />
+    <Class name="org.apache.datasketches.theta.SetOpsCornerCasesTest" />
+    <Method name="checkSeedHash" />
   </Match>
   
   <Match>   <!-- Exclude for test classes; too many False Positives. -->
@@ -43,6 +43,11 @@
     <Class name="~.*\.*Test" />
   </Match>
   
+  <Match>   <!-- Exclude for test classes; too many False Positives. -->
+    <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE" />
+    <Class name="~.*\.*Test" />
+  </Match>
+  
   <Match>
     <Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS" />
     <Class name="~.*\.Group" />
