You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/11/04 15:02:52 UTC

[commons-bcel] branch master updated (f0add0f6 -> 39e1722d)

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

ggregory pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/commons-bcel.git


    from f0add0f6 Improve test coverage to bcel/generic and UtilityTest (#162)
     new b04ca968 Improve test coverage to bcel/generic and UtilityTest #162.
     new 39e1722d Better class names

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/changes/changes.xml                            |    3 +-
 .../bcel/AbstractCounterVisitorTestCase.java       |   12 +-
 .../org/apache/bcel/classfile/UtilityTestCase.java |  110 +-
 .../apache/bcel/generic/BREAKPOINTTestCase.java    |    4 +-
 .../{CountVisitor.java => CountingVisitor.java}    | 2159 ++++++++------------
 .../java/org/apache/bcel/generic/D2FTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/D2ITestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/D2LTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/DADDTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/DDIVTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/DMULTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/DNEGTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/DREMTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/DSUBTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/F2DTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/F2ITestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/F2LTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/FADDTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/FDIVTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/FMULTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/FNEGTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/FREMTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/FSUBTestCase.java |    4 +-
 .../org/apache/bcel/generic/GETFIELDTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/I2BTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/I2CTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/I2DTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/I2FTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/I2LTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/I2STestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/IADDTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/IANDTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/IDIVTestCase.java |    4 +-
 .../org/apache/bcel/generic/IMPDEP1TestCase.java   |    4 +-
 .../org/apache/bcel/generic/IMPDEP2TestCase.java   |    4 +-
 .../java/org/apache/bcel/generic/IMULTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/INEGTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/IORTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/IREMTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/ISHLTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/ISHRTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/ISUBTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/IXORTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/L2DTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/L2FTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/L2ITestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/LADDTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LANDTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LCMPTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LDIVTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LMULTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LNEGTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LORTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/LREMTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LSHLTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LSHRTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LSUBTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LXORTestCase.java |    4 +-
 .../org/apache/bcel/generic/PUTFIELDTestCase.java  |    4 +-
 .../org/apache/bcel/generic/PUTSTATICTestCase.java |    4 +-
 .../{CounterVisitor.java => CountingVisitor.java}  |    2 +-
 61 files changed, 1028 insertions(+), 1482 deletions(-)
 rename src/test/java/org/apache/bcel/generic/{CountVisitor.java => CountingVisitor.java} (69%)
 rename src/test/java/org/apache/bcel/visitors/{CounterVisitor.java => CountingVisitor.java} (99%)


[commons-bcel] 01/02: Improve test coverage to bcel/generic and UtilityTest #162.

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-bcel.git

commit b04ca968b076c081a67a28095170b5ee1784e5f8
Author: Gary David Gregory (Code signing key) <gg...@apache.org>
AuthorDate: Fri Nov 4 10:54:56 2022 -0400

    Improve test coverage to bcel/generic and UtilityTest #162.
---
 src/changes/changes.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 17cefac8..ba43f176 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -65,7 +65,8 @@ The <action> type attribute can be add,update,fix,remove.
     <release version="6.6.2" date="20YY-MM-DD" description="Maintenance and bug fix release.">
        <!-- FIX -->
       <action                  type="fix" dev="ggregory" due-to="nbauma109, Gary Gregory">Typo in SimpleElementValue error message #161.</action>
-      <action                  type="fix" dev="ggregory" due-to="Mark Roberts Gary Gregory">Fix small performance bug in org.apache.bcel.verifier.structurals.ExceptionHandlers.ExceptionHandlers(MethodGen).</action>
+      <action                  type="fix" dev="ggregory" due-to="Mark Roberts, Gary Gregory">Fix small performance bug in org.apache.bcel.verifier.structurals.ExceptionHandlers.ExceptionHandlers(MethodGen).</action>
+      <action                  type="fix" dev="ggregory" due-to="Sam Ng, Gary Gregory">Improve test coverage to bcel/generic and UtilityTest #162.</action>
        <!-- UPDATE -->
     </release>
     <release version="6.6.1" date="2022-10-29" description="Maintenance and bug fix release.">


[commons-bcel] 02/02: Better class names

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-bcel.git

commit 39e1722d65f0f7139368b086ef61003bb7bf15f2
Author: Gary David Gregory (Code signing key) <gg...@apache.org>
AuthorDate: Fri Nov 4 11:02:47 2022 -0400

    Better class names
    
    - Better local names
    - Generate hashCode(), equals(), and toString() with Eclipse
    - Sort members
---
 .../bcel/AbstractCounterVisitorTestCase.java       |   12 +-
 .../org/apache/bcel/classfile/UtilityTestCase.java |  110 +-
 .../apache/bcel/generic/BREAKPOINTTestCase.java    |    4 +-
 .../{CountVisitor.java => CountingVisitor.java}    | 2159 ++++++++------------
 .../java/org/apache/bcel/generic/D2FTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/D2ITestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/D2LTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/DADDTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/DDIVTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/DMULTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/DNEGTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/DREMTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/DSUBTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/F2DTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/F2ITestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/F2LTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/FADDTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/FDIVTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/FMULTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/FNEGTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/FREMTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/FSUBTestCase.java |    4 +-
 .../org/apache/bcel/generic/GETFIELDTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/I2BTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/I2CTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/I2DTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/I2FTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/I2LTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/I2STestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/IADDTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/IANDTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/IDIVTestCase.java |    4 +-
 .../org/apache/bcel/generic/IMPDEP1TestCase.java   |    4 +-
 .../org/apache/bcel/generic/IMPDEP2TestCase.java   |    4 +-
 .../java/org/apache/bcel/generic/IMULTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/INEGTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/IORTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/IREMTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/ISHLTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/ISHRTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/ISUBTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/IXORTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/L2DTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/L2FTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/L2ITestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/LADDTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LANDTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LCMPTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LDIVTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LMULTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LNEGTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LORTestCase.java  |    4 +-
 .../java/org/apache/bcel/generic/LREMTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LSHLTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LSHRTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LSUBTestCase.java |    4 +-
 .../java/org/apache/bcel/generic/LXORTestCase.java |    4 +-
 .../org/apache/bcel/generic/PUTFIELDTestCase.java  |    4 +-
 .../org/apache/bcel/generic/PUTSTATICTestCase.java |    4 +-
 .../{CounterVisitor.java => CountingVisitor.java}  |    2 +-
 60 files changed, 1026 insertions(+), 1481 deletions(-)

diff --git a/src/test/java/org/apache/bcel/AbstractCounterVisitorTestCase.java b/src/test/java/org/apache/bcel/AbstractCounterVisitorTestCase.java
index e2c421ce..bb360238 100644
--- a/src/test/java/org/apache/bcel/AbstractCounterVisitorTestCase.java
+++ b/src/test/java/org/apache/bcel/AbstractCounterVisitorTestCase.java
@@ -19,28 +19,28 @@ package org.apache.bcel;
 
 import org.apache.bcel.classfile.DescendingVisitor;
 import org.apache.bcel.classfile.JavaClass;
-import org.apache.bcel.visitors.CounterVisitor;
+import org.apache.bcel.visitors.CountingVisitor;
 import org.junit.jupiter.api.BeforeEach;
 
 public abstract class AbstractCounterVisitorTestCase extends AbstractTestCase {
-    private CounterVisitor visitor;
+    private CountingVisitor visitor;
 
     protected abstract JavaClass getTestClass() throws ClassNotFoundException;
 
-    public CounterVisitor getVisitor() {
+    public CountingVisitor getVisitor() {
         if (visitor == null) {
-            visitor = new CounterVisitor();
+            visitor = new CountingVisitor();
         }
         return visitor;
     }
 
     @BeforeEach
     public void setUp() throws ClassNotFoundException {
-        visitor = new CounterVisitor();
+        visitor = new CountingVisitor();
         new DescendingVisitor(getTestClass(), getVisitor()).visit();
     }
 
-    public void setVisitor(final CounterVisitor visitor) {
+    public void setVisitor(final CountingVisitor visitor) {
         this.visitor = visitor;
     }
 }
diff --git a/src/test/java/org/apache/bcel/classfile/UtilityTestCase.java b/src/test/java/org/apache/bcel/classfile/UtilityTestCase.java
index 2121aa06..7e38c013 100644
--- a/src/test/java/org/apache/bcel/classfile/UtilityTestCase.java
+++ b/src/test/java/org/apache/bcel/classfile/UtilityTestCase.java
@@ -27,43 +27,6 @@ import org.junit.jupiter.api.Test;
 
 public class UtilityTestCase {
 
-    @Test
-    public void testSignatureToStringWithGenerics() throws Exception {
-        // tests for BCEL-197
-        assertEquals("java.util.Map<X, java.util.List<Y>>", Utility.signatureToString("Ljava/util/Map<TX;Ljava/util/List<TY;>;>;"), "generic signature");
-        assertEquals("java.util.Set<? extends java.nio.file.OpenOption>", Utility.signatureToString("Ljava/util/Set<+Ljava/nio/file/OpenOption;>;"),
-            "generic signature");
-        assertEquals("java.nio.file.attribute.FileAttribute<?>[]", Utility.signatureToString("[Ljava/nio/file/attribute/FileAttribute<*>;"),
-            "generic signature");
-
-        // tests for BCEL-286
-        assertEquals(
-            "boofcv.alg.tracker.tld.TldTracker<boofcv.struct.image.ImageGray<boofcv.struct.image.GrayU8>, boofcv.struct.image.GrayI<boofcv.struct.image.GrayU8>>",
-            Utility.signatureToString(
-                "Lboofcv/alg/tracker/tld/TldTracker<Lboofcv/struct/image/ImageGray<Lboofcv/struct/image/GrayU8;>;Lboofcv/struct/image/GrayI<Lboofcv/struct/image/GrayU8;>;>;"),
-            "generic signature");
-        assertEquals("java.util.Map<?, ?>", Utility.signatureToString("Ljava/util/Map<**>;"), "generic signature");
-        assertEquals("com.jme3.util.IntMap<T>.IntMapIterator", Utility.signatureToString("Lcom/jme3/util/IntMap<TT;>.IntMapIterator;"), "generic signature");
-
-        // tests for BCEL-279
-        assertEquals("<T extends java.lang.Object>(com.google.common.io.ByteProcessor<T>, int)T",
-            Utility.signatureToString("<T:Ljava/lang/Object;>(Lcom/google/common/io/ByteProcessor<TT;>;I)TT;", false), "type parameters signature");
-        assertEquals("<T extends Object>(com.google.common.io.ByteProcessor<T>, int)T",
-            Utility.signatureToString("<T:Ljava/lang/Object;>(Lcom/google/common/io/ByteProcessor<TT;>;I)TT;", true), "type parameters signature");
-        assertEquals("<M extends java.lang.reflect.AccessibleObject & java.lang.reflect.Member>(M)void",
-            Utility.signatureToString("<M:Ljava/lang/reflect/AccessibleObject;:Ljava/lang/reflect/Member;>(TM;)V"), "type parameters signature");
-        assertEquals("<K1 extends K, V1 extends V>()com.google.common.cache.Weigher<K1, V1>",
-            Utility.signatureToString("<K1:TK;V1:TV;>()Lcom/google/common/cache/Weigher<TK1;TV1;>;"), "type parameters signature");
-        assertEquals("<K1 extends K, V1 extends V>(com.google.common.cache.Weigher<? super K1, ? super V1>)com.google.common.cache.CacheBuilder<K1, V1>",
-            Utility.signatureToString("<K1:TK;V1:TV;>(Lcom/google/common/cache/Weigher<-TK1;-TV1;>;)Lcom/google/common/cache/CacheBuilder<TK1;TV1;>;"),
-            "type parameters signature");
-        assertEquals("<N extends java.lang.Object, E extends java.lang.Object> extends java.lang.Object implements com.google.common.graph.Network<N, E>",
-            Utility.signatureToString("<N:Ljava/lang/Object;E:Ljava/lang/Object;>Ljava/lang/Object;Lcom/google/common/graph/Network<TN;TE;>;", false),
-            "class signature");
-        assertEquals("<K extends Object, V extends Object> extends Object",
-            Utility.signatureToString("<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;"), "class signature");
-    }
-
     @Test
     public void testClearBit() {
         assertEquals(0, Utility.clearBit(0, 0));
@@ -76,14 +39,13 @@ public class UtilityTestCase {
     }
 
     @Test
-    public void testSetBit() {
-        assertEquals(1, Utility.setBit(0, 0), "0 bit 0 set to 1 -> 1");
-        assertEquals(1, Utility.setBit(1, 0), "1 bit 0 is 1 hence no change");
-        assertEquals(3, Utility.setBit(1, 1), "1 bit 1 set to 1 -> 3");
-        assertEquals(8, Utility.setBit(8, 3), "1000 bit 3 is 1 hence no change");
-        assertEquals(9, Utility.setBit(1, 3), "0001 bit 3 set to 1 -> 1001");
-        assertEquals(-1, Utility.setBit(-2, 0), "111...10 set bit 0 to 1 -> 111..11");
-        assertEquals(Integer.MIN_VALUE, Utility.setBit(0, 31), "000...00 set bit 31 to 0 -> 100..00");
+    public void testConvertString() {
+        assertEquals("\\n", Utility.convertString("\n"));
+        assertEquals("\\r", Utility.convertString("\r"));
+        assertEquals("\\\"", Utility.convertString("\""));
+        assertEquals("\\'", Utility.convertString("'"));
+        assertEquals("\\\\", Utility.convertString("\\"));
+        assertEquals("abc", Utility.convertString("abc"));
     }
 
     @Test
@@ -98,16 +60,6 @@ public class UtilityTestCase {
         assertFalse(Utility.isSet(9, 1));
     }
 
-    @Test
-    public void testConvertString() {
-        assertEquals("\\n", Utility.convertString("\n"));
-        assertEquals("\\r", Utility.convertString("\r"));
-        assertEquals("\\\"", Utility.convertString("\""));
-        assertEquals("\\'", Utility.convertString("'"));
-        assertEquals("\\\\", Utility.convertString("\\"));
-        assertEquals("abc", Utility.convertString("abc"));
-    }
-
     @Test
     public void testPrintArray() {
         assertEquals(null, Utility.printArray(null, false, false));
@@ -129,4 +81,52 @@ public class UtilityTestCase {
         assertEquals(Const.I2D, Utility.searchOpcode("I2D"), "case insensitive");
         assertEquals(Const.UNDEFINED, Utility.searchOpcode("???"), "not found");
     }
+
+    @Test
+    public void testSetBit() {
+        assertEquals(1, Utility.setBit(0, 0), "0 bit 0 set to 1 -> 1");
+        assertEquals(1, Utility.setBit(1, 0), "1 bit 0 is 1 hence no change");
+        assertEquals(3, Utility.setBit(1, 1), "1 bit 1 set to 1 -> 3");
+        assertEquals(8, Utility.setBit(8, 3), "1000 bit 3 is 1 hence no change");
+        assertEquals(9, Utility.setBit(1, 3), "0001 bit 3 set to 1 -> 1001");
+        assertEquals(-1, Utility.setBit(-2, 0), "111...10 set bit 0 to 1 -> 111..11");
+        assertEquals(Integer.MIN_VALUE, Utility.setBit(0, 31), "000...00 set bit 31 to 0 -> 100..00");
+    }
+
+    @Test
+    public void testSignatureToStringWithGenerics() throws Exception {
+        // tests for BCEL-197
+        assertEquals("java.util.Map<X, java.util.List<Y>>", Utility.signatureToString("Ljava/util/Map<TX;Ljava/util/List<TY;>;>;"), "generic signature");
+        assertEquals("java.util.Set<? extends java.nio.file.OpenOption>", Utility.signatureToString("Ljava/util/Set<+Ljava/nio/file/OpenOption;>;"),
+            "generic signature");
+        assertEquals("java.nio.file.attribute.FileAttribute<?>[]", Utility.signatureToString("[Ljava/nio/file/attribute/FileAttribute<*>;"),
+            "generic signature");
+
+        // tests for BCEL-286
+        assertEquals(
+            "boofcv.alg.tracker.tld.TldTracker<boofcv.struct.image.ImageGray<boofcv.struct.image.GrayU8>, boofcv.struct.image.GrayI<boofcv.struct.image.GrayU8>>",
+            Utility.signatureToString(
+                "Lboofcv/alg/tracker/tld/TldTracker<Lboofcv/struct/image/ImageGray<Lboofcv/struct/image/GrayU8;>;Lboofcv/struct/image/GrayI<Lboofcv/struct/image/GrayU8;>;>;"),
+            "generic signature");
+        assertEquals("java.util.Map<?, ?>", Utility.signatureToString("Ljava/util/Map<**>;"), "generic signature");
+        assertEquals("com.jme3.util.IntMap<T>.IntMapIterator", Utility.signatureToString("Lcom/jme3/util/IntMap<TT;>.IntMapIterator;"), "generic signature");
+
+        // tests for BCEL-279
+        assertEquals("<T extends java.lang.Object>(com.google.common.io.ByteProcessor<T>, int)T",
+            Utility.signatureToString("<T:Ljava/lang/Object;>(Lcom/google/common/io/ByteProcessor<TT;>;I)TT;", false), "type parameters signature");
+        assertEquals("<T extends Object>(com.google.common.io.ByteProcessor<T>, int)T",
+            Utility.signatureToString("<T:Ljava/lang/Object;>(Lcom/google/common/io/ByteProcessor<TT;>;I)TT;", true), "type parameters signature");
+        assertEquals("<M extends java.lang.reflect.AccessibleObject & java.lang.reflect.Member>(M)void",
+            Utility.signatureToString("<M:Ljava/lang/reflect/AccessibleObject;:Ljava/lang/reflect/Member;>(TM;)V"), "type parameters signature");
+        assertEquals("<K1 extends K, V1 extends V>()com.google.common.cache.Weigher<K1, V1>",
+            Utility.signatureToString("<K1:TK;V1:TV;>()Lcom/google/common/cache/Weigher<TK1;TV1;>;"), "type parameters signature");
+        assertEquals("<K1 extends K, V1 extends V>(com.google.common.cache.Weigher<? super K1, ? super V1>)com.google.common.cache.CacheBuilder<K1, V1>",
+            Utility.signatureToString("<K1:TK;V1:TV;>(Lcom/google/common/cache/Weigher<-TK1;-TV1;>;)Lcom/google/common/cache/CacheBuilder<TK1;TV1;>;"),
+            "type parameters signature");
+        assertEquals("<N extends java.lang.Object, E extends java.lang.Object> extends java.lang.Object implements com.google.common.graph.Network<N, E>",
+            Utility.signatureToString("<N:Ljava/lang/Object;E:Ljava/lang/Object;>Ljava/lang/Object;Lcom/google/common/graph/Network<TN;TE;>;", false),
+            "class signature");
+        assertEquals("<K extends Object, V extends Object> extends Object",
+            Utility.signatureToString("<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;"), "class signature");
+    }
 }
diff --git a/src/test/java/org/apache/bcel/generic/BREAKPOINTTestCase.java b/src/test/java/org/apache/bcel/generic/BREAKPOINTTestCase.java
index bcd6d625..ee8d263b 100644
--- a/src/test/java/org/apache/bcel/generic/BREAKPOINTTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/BREAKPOINTTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class BREAKPOINTTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final BREAKPOINT breakpoint = new BREAKPOINT();
         breakpoint.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setBreakpoint(1);
         assertEquals(expected, countVisitor);
     }
diff --git a/src/test/java/org/apache/bcel/generic/CountVisitor.java b/src/test/java/org/apache/bcel/generic/CountingVisitor.java
similarity index 69%
rename from src/test/java/org/apache/bcel/generic/CountVisitor.java
rename to src/test/java/org/apache/bcel/generic/CountingVisitor.java
index 13423834..2432c21f 100644
--- a/src/test/java/org/apache/bcel/generic/CountVisitor.java
+++ b/src/test/java/org/apache/bcel/generic/CountingVisitor.java
@@ -18,7 +18,7 @@ package org.apache.bcel.generic;
 
 import java.util.Objects;
 
-public class CountVisitor implements Visitor {
+public class CountingVisitor implements Visitor {
     private int aaload;
     private int aastore;
     private int aconstNull;
@@ -87,7 +87,6 @@ public class CountVisitor implements Visitor {
     private int fsub;
     private int getfield;
     private int getstatic;
-    // TBC
     private int goTo;
     private int gotoW;
     private int gotoInstruction;
@@ -176,8 +175,7 @@ public class CountVisitor implements Visitor {
     private int monitorenter;
     private int monitorexit;
     private int multianewarray;
-    // TBC
-    private int nEW;
+    private int newCount; // "new" is reserved
     private int newarray;
     private int nop;
     private int pop;
@@ -187,8 +185,7 @@ public class CountVisitor implements Visitor {
     private int putfield;
     private int putstatic;
     private int ret;
-    // TBC
-    private int rETURN;
+    private int returnCount; // "new" is reserved
     private int returnInstruction;
     private int saload;
     private int sastore;
@@ -205,1640 +202,1561 @@ public class CountVisitor implements Visitor {
     private int variableLengthInstruction;
 
     @Override
-    public String toString() {
-        return "CountVisitor{" +
-                "aaload=" + aaload +
-                ", aastore=" + aastore +
-                ", aconstNull=" + aconstNull +
-                ", allocationInstruction=" + allocationInstruction +
-                ", aload=" + aload +
-                ", anewarray=" + anewarray +
-                ", areturn=" + areturn +
-                ", arithmeticInstruction=" + arithmeticInstruction +
-                ", arrayInstruction=" + arrayInstruction +
-                ", arraylength=" + arraylength +
-                ", astore=" + astore +
-                ", athrow=" + athrow +
-                ", baload=" + baload +
-                ", bastore=" + bastore +
-                ", bipush=" + bipush +
-                ", branchInstruction=" + branchInstruction +
-                ", breakpoint=" + breakpoint +
-                ", caload=" + caload +
-                ", castore=" + castore +
-                ", checkcast=" + checkcast +
-                ", constantPushInstruction=" + constantPushInstruction +
-                ", conversionInstruction=" + conversionInstruction +
-                ", cpInstruction=" + cpInstruction +
-                ", d2F=" + d2F +
-                ", d2I=" + d2I +
-                ", d2L=" + d2L +
-                ", dadd=" + dadd +
-                ", daload=" + daload +
-                ", dastore=" + dastore +
-                ", dcmpg=" + dcmpg +
-                ", dcmpl=" + dcmpl +
-                ", dconst=" + dconst +
-                ", ddiv=" + ddiv +
-                ", dload=" + dload +
-                ", dmul=" + dmul +
-                ", dneg=" + dneg +
-                ", drem=" + drem +
-                ", dreturn=" + dreturn +
-                ", dstore=" + dstore +
-                ", dsub=" + dsub +
-                ", dup=" + dup +
-                ", dupX1=" + dupX1 +
-                ", dupX2=" + dupX2 +
-                ", dup2=" + dup2 +
-                ", dup2X1=" + dup2X1 +
-                ", dup2X2=" + dup2X2 +
-                ", exceptionThrower=" + exceptionThrower +
-                ", f2D=" + f2D +
-                ", f2I=" + f2I +
-                ", f2L=" + f2L +
-                ", fadd=" + fadd +
-                ", faload=" + faload +
-                ", fastore=" + fastore +
-                ", fcmpg=" + fcmpg +
-                ", fcmpl=" + fcmpl +
-                ", fconst=" + fconst +
-                ", fdiv=" + fdiv +
-                ", fieldInstruction=" + fieldInstruction +
-                ", fieldOrMethod=" + fieldOrMethod +
-                ", fload=" + fload +
-                ", fmul=" + fmul +
-                ", fneg=" + fneg +
-                ", frem=" + frem +
-                ", freturn=" + freturn +
-                ", fstore=" + fstore +
-                ", fsub=" + fsub +
-                ", getfield=" + getfield +
-                ", getstatic=" + getstatic +
-                ", goTo=" + goTo +
-                ", gotoW=" + gotoW +
-                ", gotoInstruction=" + gotoInstruction +
-                ", i2B=" + i2B +
-                ", i2C=" + i2C +
-                ", i2D=" + i2D +
-                ", i2F=" + i2F +
-                ", i2L=" + i2L +
-                ", i2S=" + i2S +
-                ", iadd=" + iadd +
-                ", iaload=" + iaload +
-                ", iand=" + iand +
-                ", iastore=" + iastore +
-                ", iconst=" + iconst +
-                ", idiv=" + idiv +
-                ", ifAcmpeq=" + ifAcmpeq +
-                ", ifAcmpne=" + ifAcmpne +
-                ", ifIcmpeq=" + ifIcmpeq +
-                ", ifIcmpge=" + ifIcmpge +
-                ", ifIcmpgt=" + ifIcmpgt +
-                ", ifIcmple=" + ifIcmple +
-                ", ifIcmplt=" + ifIcmplt +
-                ", ifIcmpne=" + ifIcmpne +
-                ", ifeq=" + ifeq +
-                ", ifge=" + ifge +
-                ", ifgt=" + ifgt +
-                ", ifInstruction=" + ifInstruction +
-                ", ifle=" + ifle +
-                ", iflt=" + iflt +
-                ", ifne=" + ifne +
-                ", ifnonnull=" + ifnonnull +
-                ", ifnull=" + ifnull +
-                ", iinc=" + iinc +
-                ", iload=" + iload +
-                ", impdep1=" + impdep1 +
-                ", impdep2=" + impdep2 +
-                ", imul=" + imul +
-                ", ineg=" + ineg +
-                ", instanceOf=" + instanceOf +
-                ", invokedynamic=" + invokedynamic +
-                ", invokeInstruction=" + invokeInstruction +
-                ", invokeinterface=" + invokeinterface +
-                ", invokespecial=" + invokespecial +
-                ", invokestatic=" + invokestatic +
-                ", invokevirtual=" + invokevirtual +
-                ", ior=" + ior +
-                ", irem=" + irem +
-                ", ireturn=" + ireturn +
-                ", ishl=" + ishl +
-                ", ishr=" + ishr +
-                ", istore=" + istore +
-                ", isub=" + isub +
-                ", iushr=" + iushr +
-                ", ixor=" + ixor +
-                ", jsr=" + jsr +
-                ", jsrW=" + jsrW +
-                ", jsrInstruction=" + jsrInstruction +
-                ", l2D=" + l2D +
-                ", l2F=" + l2F +
-                ", l2I=" + l2I +
-                ", ladd=" + ladd +
-                ", laload=" + laload +
-                ", land=" + land +
-                ", lastore=" + lastore +
-                ", lcmp=" + lcmp +
-                ", lconst=" + lconst +
-                ", ldc=" + ldc +
-                ", ldc2W=" + ldc2W +
-                ", ldiv=" + ldiv +
-                ", lload=" + lload +
-                ", lmul=" + lmul +
-                ", lneg=" + lneg +
-                ", loadClass=" + loadClass +
-                ", loadInstruction=" + loadInstruction +
-                ", localVariableInstruction=" + localVariableInstruction +
-                ", lookupswitch=" + lookupswitch +
-                ", lor=" + lor +
-                ", lrem=" + lrem +
-                ", lreturn=" + lreturn +
-                ", lshl=" + lshl +
-                ", lshr=" + lshr +
-                ", lstore=" + lstore +
-                ", lsub=" + lsub +
-                ", lushr=" + lushr +
-                ", lxor=" + lxor +
-                ", monitorenter=" + monitorenter +
-                ", monitorexit=" + monitorexit +
-                ", multianewarray=" + multianewarray +
-                ", nEW=" + nEW +
-                ", newarray=" + newarray +
-                ", nop=" + nop +
-                ", pop=" + pop +
-                ", pop2=" + pop2 +
-                ", popInstruction=" + popInstruction +
-                ", pushInstruction=" + pushInstruction +
-                ", putfield=" + putfield +
-                ", putstatic=" + putstatic +
-                ", ret=" + ret +
-                ", rETURN=" + rETURN +
-                ", returnInstruction=" + returnInstruction +
-                ", saload=" + saload +
-                ", sastore=" + sastore +
-                ", select=" + select +
-                ", sipush=" + sipush +
-                ", stackConsumer=" + stackConsumer +
-                ", stackInstruction=" + stackInstruction +
-                ", stackProducer=" + stackProducer +
-                ", storeInstruction=" + storeInstruction +
-                ", swap=" + swap +
-                ", tableswitch=" + tableswitch +
-                ", typedInstruction=" + typedInstruction +
-                ", unconditionalBranch=" + unconditionalBranch +
-                ", variableLengthInstruction=" + variableLengthInstruction +
-                '}';
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        CountingVisitor other = (CountingVisitor) obj;
+        return aaload == other.aaload && aastore == other.aastore && aconstNull == other.aconstNull && allocationInstruction == other.allocationInstruction
+                && aload == other.aload && anewarray == other.anewarray && areturn == other.areturn && arithmeticInstruction == other.arithmeticInstruction
+                && arrayInstruction == other.arrayInstruction && arraylength == other.arraylength && astore == other.astore && athrow == other.athrow
+                && baload == other.baload && bastore == other.bastore && bipush == other.bipush && branchInstruction == other.branchInstruction
+                && breakpoint == other.breakpoint && caload == other.caload && castore == other.castore && checkcast == other.checkcast
+                && constantPushInstruction == other.constantPushInstruction && conversionInstruction == other.conversionInstruction
+                && cpInstruction == other.cpInstruction && d2F == other.d2F && d2I == other.d2I && d2L == other.d2L && dadd == other.dadd
+                && daload == other.daload && dastore == other.dastore && dcmpg == other.dcmpg && dcmpl == other.dcmpl && dconst == other.dconst
+                && ddiv == other.ddiv && dload == other.dload && dmul == other.dmul && dneg == other.dneg && drem == other.drem && dreturn == other.dreturn
+                && dstore == other.dstore && dsub == other.dsub && dup == other.dup && dup2 == other.dup2 && dup2X1 == other.dup2X1 && dup2X2 == other.dup2X2
+                && dupX1 == other.dupX1 && dupX2 == other.dupX2 && exceptionThrower == other.exceptionThrower && f2D == other.f2D && f2I == other.f2I
+                && f2L == other.f2L && fadd == other.fadd && faload == other.faload && fastore == other.fastore && fcmpg == other.fcmpg && fcmpl == other.fcmpl
+                && fconst == other.fconst && fdiv == other.fdiv && fieldInstruction == other.fieldInstruction && fieldOrMethod == other.fieldOrMethod
+                && fload == other.fload && fmul == other.fmul && fneg == other.fneg && frem == other.frem && freturn == other.freturn && fstore == other.fstore
+                && fsub == other.fsub && getfield == other.getfield && getstatic == other.getstatic && goTo == other.goTo
+                && gotoInstruction == other.gotoInstruction && gotoW == other.gotoW && i2B == other.i2B && i2C == other.i2C && i2D == other.i2D
+                && i2F == other.i2F && i2L == other.i2L && i2S == other.i2S && iadd == other.iadd && iaload == other.iaload && iand == other.iand
+                && iastore == other.iastore && iconst == other.iconst && idiv == other.idiv && ifAcmpeq == other.ifAcmpeq && ifAcmpne == other.ifAcmpne
+                && ifIcmpeq == other.ifIcmpeq && ifIcmpge == other.ifIcmpge && ifIcmpgt == other.ifIcmpgt && ifIcmple == other.ifIcmple
+                && ifIcmplt == other.ifIcmplt && ifIcmpne == other.ifIcmpne && ifInstruction == other.ifInstruction && ifeq == other.ifeq && ifge == other.ifge
+                && ifgt == other.ifgt && ifle == other.ifle && iflt == other.iflt && ifne == other.ifne && ifnonnull == other.ifnonnull
+                && ifnull == other.ifnull && iinc == other.iinc && iload == other.iload && impdep1 == other.impdep1 && impdep2 == other.impdep2
+                && imul == other.imul && ineg == other.ineg && instanceOf == other.instanceOf && invokeInstruction == other.invokeInstruction
+                && invokedynamic == other.invokedynamic && invokeinterface == other.invokeinterface && invokespecial == other.invokespecial
+                && invokestatic == other.invokestatic && invokevirtual == other.invokevirtual && ior == other.ior && irem == other.irem
+                && ireturn == other.ireturn && ishl == other.ishl && ishr == other.ishr && istore == other.istore && isub == other.isub && iushr == other.iushr
+                && ixor == other.ixor && jsr == other.jsr && jsrInstruction == other.jsrInstruction && jsrW == other.jsrW && l2D == other.l2D
+                && l2F == other.l2F && l2I == other.l2I && ladd == other.ladd && laload == other.laload && land == other.land && lastore == other.lastore
+                && lcmp == other.lcmp && lconst == other.lconst && ldc == other.ldc && ldc2W == other.ldc2W && ldiv == other.ldiv && lload == other.lload
+                && lmul == other.lmul && lneg == other.lneg && loadClass == other.loadClass && loadInstruction == other.loadInstruction
+                && localVariableInstruction == other.localVariableInstruction && lookupswitch == other.lookupswitch && lor == other.lor && lrem == other.lrem
+                && lreturn == other.lreturn && lshl == other.lshl && lshr == other.lshr && lstore == other.lstore && lsub == other.lsub && lushr == other.lushr
+                && lxor == other.lxor && monitorenter == other.monitorenter && monitorexit == other.monitorexit && multianewarray == other.multianewarray
+                && newCount == other.newCount && newarray == other.newarray && nop == other.nop && pop == other.pop && pop2 == other.pop2
+                && popInstruction == other.popInstruction && pushInstruction == other.pushInstruction && putfield == other.putfield
+                && putstatic == other.putstatic && ret == other.ret && returnCount == other.returnCount && returnInstruction == other.returnInstruction
+                && saload == other.saload && sastore == other.sastore && select == other.select && sipush == other.sipush
+                && stackConsumer == other.stackConsumer && stackInstruction == other.stackInstruction && stackProducer == other.stackProducer
+                && storeInstruction == other.storeInstruction && swap == other.swap && tableswitch == other.tableswitch
+                && typedInstruction == other.typedInstruction && unconditionalBranch == other.unconditionalBranch
+                && variableLengthInstruction == other.variableLengthInstruction;
     }
 
     public int getAaload() {
         return aaload;
     }
 
-    public void setAaload(int aaload) {
-        this.aaload = aaload;
-    }
-
     public int getAastore() {
         return aastore;
     }
 
-    public void setAastore(int aastore) {
-        this.aastore = aastore;
-    }
-
     public int getAconstNull() {
         return aconstNull;
     }
 
-    public void setAconstNull(int aconstNull) {
-        this.aconstNull = aconstNull;
-    }
-
     public int getAllocationInstruction() {
         return allocationInstruction;
     }
 
-    public void setAllocationInstruction(int allocationInstruction) {
-        this.allocationInstruction = allocationInstruction;
-    }
-
     public int getAload() {
         return aload;
     }
 
-    public void setAload(int aload) {
-        this.aload = aload;
-    }
-
     public int getAnewarray() {
         return anewarray;
     }
 
-    public void setAnewarray(int anewarray) {
-        this.anewarray = anewarray;
-    }
-
     public int getAreturn() {
         return areturn;
     }
 
-    public void setAreturn(int areturn) {
-        this.areturn = areturn;
-    }
-
     public int getArithmeticInstruction() {
         return arithmeticInstruction;
     }
 
-    public void setArithmeticInstruction(int arithmeticInstruction) {
-        this.arithmeticInstruction = arithmeticInstruction;
-    }
-
     public int getArrayInstruction() {
         return arrayInstruction;
     }
 
-    public void setArrayInstruction(int arrayInstruction) {
-        this.arrayInstruction = arrayInstruction;
-    }
-
     public int getArraylength() {
         return arraylength;
     }
 
-    public void setArraylength(int arraylength) {
-        this.arraylength = arraylength;
-    }
-
     public int getAstore() {
         return astore;
     }
 
-    public void setAstore(int astore) {
-        this.astore = astore;
-    }
-
     public int getAthrow() {
         return athrow;
     }
 
-    public void setAthrow(int athrow) {
-        this.athrow = athrow;
-    }
-
     public int getBaload() {
         return baload;
     }
 
-    public void setBaload(int baload) {
-        this.baload = baload;
-    }
-
     public int getBastore() {
         return bastore;
     }
 
-    public void setBastore(int bastore) {
-        this.bastore = bastore;
-    }
-
     public int getBipush() {
         return bipush;
     }
 
-    public void setBipush(int bipush) {
-        this.bipush = bipush;
-    }
-
     public int getBranchInstruction() {
         return branchInstruction;
     }
 
-    public void setBranchInstruction(int branchInstruction) {
-        this.branchInstruction = branchInstruction;
-    }
-
     public int getBreakpoint() {
         return breakpoint;
     }
 
-    public void setBreakpoint(int breakpoint) {
-        this.breakpoint = breakpoint;
-    }
-
     public int getCaload() {
         return caload;
     }
 
-    public void setCaload(int caload) {
-        this.caload = caload;
-    }
-
     public int getCastore() {
         return castore;
     }
 
-    public void setCastore(int castore) {
-        this.castore = castore;
-    }
-
     public int getCheckcast() {
         return checkcast;
     }
 
-    public void setCheckcast(int checkcast) {
-        this.checkcast = checkcast;
-    }
-
     public int getConstantPushInstruction() {
         return constantPushInstruction;
     }
 
-    public void setConstantPushInstruction(int constantPushInstruction) {
-        this.constantPushInstruction = constantPushInstruction;
-    }
-
     public int getConversionInstruction() {
         return conversionInstruction;
     }
 
-    public void setConversionInstruction(int conversionInstruction) {
-        this.conversionInstruction = conversionInstruction;
-    }
-
     public int getCpInstruction() {
         return cpInstruction;
     }
 
-    public void setCpInstruction(int cpInstruction) {
-        this.cpInstruction = cpInstruction;
-    }
-
     public int getD2F() {
         return d2F;
     }
 
-    public void setD2F(int d2F) {
-        this.d2F = d2F;
-    }
-
     public int getD2I() {
         return d2I;
     }
 
-    public void setD2I(int d2I) {
-        this.d2I = d2I;
-    }
-
     public int getD2L() {
         return d2L;
     }
 
-    public void setD2L(int d2L) {
-        this.d2L = d2L;
-    }
-
     public int getDadd() {
         return dadd;
     }
 
-    public void setDadd(int dadd) {
-        this.dadd = dadd;
-    }
-
     public int getDaload() {
         return daload;
     }
 
-    public void setDaload(int daload) {
-        this.daload = daload;
-    }
-
     public int getDastore() {
         return dastore;
     }
 
-    public void setDastore(int dastore) {
-        this.dastore = dastore;
-    }
-
     public int getDcmpg() {
         return dcmpg;
     }
 
-    public void setDcmpg(int dcmpg) {
-        this.dcmpg = dcmpg;
-    }
-
     public int getDcmpl() {
         return dcmpl;
     }
 
-    public void setDcmpl(int dcmpl) {
-        this.dcmpl = dcmpl;
-    }
-
     public int getDconst() {
         return dconst;
     }
 
-    public void setDconst(int dconst) {
-        this.dconst = dconst;
-    }
-
     public int getDdiv() {
         return ddiv;
     }
 
-    public void setDdiv(int ddiv) {
-        this.ddiv = ddiv;
-    }
-
     public int getDload() {
         return dload;
     }
 
-    public void setDload(int dload) {
-        this.dload = dload;
-    }
-
     public int getDmul() {
         return dmul;
     }
 
-    public void setDmul(int dmul) {
-        this.dmul = dmul;
-    }
-
     public int getDneg() {
         return dneg;
     }
 
-    public void setDneg(int dneg) {
-        this.dneg = dneg;
-    }
-
     public int getDrem() {
         return drem;
     }
 
-    public void setDrem(int drem) {
-        this.drem = drem;
-    }
-
     public int getDreturn() {
         return dreturn;
     }
 
-    public void setDreturn(int dreturn) {
-        this.dreturn = dreturn;
-    }
-
     public int getDstore() {
         return dstore;
     }
 
-    public void setDstore(int dstore) {
-        this.dstore = dstore;
-    }
-
     public int getDsub() {
         return dsub;
     }
 
-    public void setDsub(int dsub) {
-        this.dsub = dsub;
-    }
-
     public int getDup() {
         return dup;
     }
 
-    public void setDup(int dup) {
-        this.dup = dup;
-    }
-
-    public int getDupX1() {
-        return dupX1;
-    }
-
-    public void setDupX1(int dupX1) {
-        this.dupX1 = dupX1;
-    }
-
-    public int getDupX2() {
-        return dupX2;
-    }
-
-    public void setDupX2(int dupX2) {
-        this.dupX2 = dupX2;
-    }
-
     public int getDup2() {
         return dup2;
     }
 
-    public void setDup2(int dup2) {
-        this.dup2 = dup2;
-    }
-
     public int getDup2X1() {
         return dup2X1;
     }
 
-    public void setDup2X1(int dup2X1) {
-        this.dup2X1 = dup2X1;
-    }
-
     public int getDup2X2() {
         return dup2X2;
     }
 
-    public void setDup2X2(int dup2X2) {
-        this.dup2X2 = dup2X2;
+    public int getDupX1() {
+        return dupX1;
     }
 
-    public int getExceptionThrower() {
-        return exceptionThrower;
+    public int getDupX2() {
+        return dupX2;
     }
 
-    public void setExceptionThrower(int exceptionThrower) {
-        this.exceptionThrower = exceptionThrower;
+    public int getExceptionThrower() {
+        return exceptionThrower;
     }
 
     public int getF2D() {
         return f2D;
     }
 
-    public void setF2D(int f2D) {
-        this.f2D = f2D;
-    }
-
     public int getF2I() {
         return f2I;
     }
 
-    public void setF2I(int f2I) {
-        this.f2I = f2I;
-    }
-
     public int getF2L() {
         return f2L;
     }
 
-    public void setF2L(int f2L) {
-        this.f2L = f2L;
-    }
-
     public int getFadd() {
         return fadd;
     }
 
-    public void setFadd(int fadd) {
-        this.fadd = fadd;
-    }
-
     public int getFaload() {
         return faload;
     }
 
-    public void setFaload(int faload) {
-        this.faload = faload;
-    }
-
     public int getFastore() {
         return fastore;
     }
 
-    public void setFastore(int fastore) {
-        this.fastore = fastore;
-    }
-
     public int getFcmpg() {
         return fcmpg;
     }
 
-    public void setFcmpg(int fcmpg) {
-        this.fcmpg = fcmpg;
-    }
-
     public int getFcmpl() {
         return fcmpl;
     }
 
-    public void setFcmpl(int fcmpl) {
-        this.fcmpl = fcmpl;
-    }
-
     public int getFconst() {
         return fconst;
     }
 
-    public void setFconst(int fconst) {
-        this.fconst = fconst;
-    }
-
     public int getFdiv() {
         return fdiv;
     }
 
-    public void setFdiv(int fdiv) {
-        this.fdiv = fdiv;
-    }
-
     public int getFieldInstruction() {
         return fieldInstruction;
     }
 
-    public void setFieldInstruction(int fieldInstruction) {
-        this.fieldInstruction = fieldInstruction;
-    }
-
     public int getFieldOrMethod() {
         return fieldOrMethod;
     }
 
-    public void setFieldOrMethod(int fieldOrMethod) {
-        this.fieldOrMethod = fieldOrMethod;
-    }
-
     public int getFload() {
         return fload;
     }
 
-    public void setFload(int fload) {
-        this.fload = fload;
-    }
-
     public int getFmul() {
         return fmul;
     }
 
-    public void setFmul(int fmul) {
-        this.fmul = fmul;
-    }
-
     public int getFneg() {
         return fneg;
     }
 
-    public void setFneg(int fneg) {
-        this.fneg = fneg;
-    }
-
     public int getFrem() {
         return frem;
     }
 
-    public void setFrem(int frem) {
-        this.frem = frem;
-    }
-
     public int getFreturn() {
         return freturn;
     }
 
-    public void setFreturn(int freturn) {
-        this.freturn = freturn;
-    }
-
     public int getFstore() {
         return fstore;
     }
 
-    public void setFstore(int fstore) {
-        this.fstore = fstore;
-    }
-
     public int getFsub() {
         return fsub;
     }
 
-    public void setFsub(int fsub) {
-        this.fsub = fsub;
-    }
-
     public int getGetfield() {
         return getfield;
     }
 
-    public void setGetfield(int getfield) {
-        this.getfield = getfield;
-    }
-
     public int getGetstatic() {
         return getstatic;
     }
 
-    public void setGetstatic(int getstatic) {
-        this.getstatic = getstatic;
-    }
-
     public int getGoTo() {
         return goTo;
     }
 
-    public void setGoTo(int goTo) {
-        this.goTo = goTo;
-    }
-
-    public int getGotoW() {
-        return gotoW;
-    }
-
-    public void setGotoW(int gotoW) {
-        this.gotoW = gotoW;
-    }
-
     public int getGotoInstruction() {
         return gotoInstruction;
     }
 
-    public void setGotoInstruction(int gotoInstruction) {
-        this.gotoInstruction = gotoInstruction;
+    public int getGotoW() {
+        return gotoW;
     }
 
     public int getI2B() {
         return i2B;
     }
 
-    public void setI2B(int i2B) {
-        this.i2B = i2B;
-    }
-
     public int getI2C() {
         return i2C;
     }
 
-    public void setI2C(int i2C) {
-        this.i2C = i2C;
-    }
-
     public int getI2D() {
         return i2D;
     }
 
-    public void setI2D(int i2D) {
-        this.i2D = i2D;
-    }
-
     public int getI2F() {
         return i2F;
     }
 
-    public void setI2F(int i2F) {
-        this.i2F = i2F;
-    }
-
     public int getI2L() {
         return i2L;
     }
 
-    public void setI2L(int i2L) {
-        this.i2L = i2L;
-    }
-
     public int getI2S() {
         return i2S;
     }
 
-    public void setI2S(int i2S) {
-        this.i2S = i2S;
-    }
-
     public int getIadd() {
         return iadd;
     }
 
-    public void setIadd(int iadd) {
-        this.iadd = iadd;
-    }
-
     public int getIaload() {
         return iaload;
     }
 
-    public void setIaload(int iaload) {
-        this.iaload = iaload;
-    }
-
     public int getIand() {
         return iand;
     }
 
-    public void setIand(int iand) {
-        this.iand = iand;
-    }
-
     public int getIastore() {
         return iastore;
     }
 
-    public void setIastore(int iastore) {
-        this.iastore = iastore;
-    }
-
     public int getIconst() {
         return iconst;
     }
 
-    public void setIconst(int iconst) {
-        this.iconst = iconst;
-    }
-
     public int getIdiv() {
         return idiv;
     }
 
-    public void setIdiv(int idiv) {
-        this.idiv = idiv;
-    }
-
     public int getIfAcmpeq() {
         return ifAcmpeq;
     }
 
-    public void setIfAcmpeq(int ifAcmpeq) {
-        this.ifAcmpeq = ifAcmpeq;
-    }
-
     public int getIfAcmpne() {
         return ifAcmpne;
     }
 
-    public void setIfAcmpne(int ifAcmpne) {
-        this.ifAcmpne = ifAcmpne;
+    public int getIfeq() {
+        return ifeq;
     }
 
-    public int getIfIcmpeq() {
-        return ifIcmpeq;
+    public int getIfge() {
+        return ifge;
     }
 
-    public void setIfIcmpeq(int ifIcmpeq) {
-        this.ifIcmpeq = ifIcmpeq;
+    public int getIfgt() {
+        return ifgt;
     }
 
-    public int getIfIcmpge() {
-        return ifIcmpge;
+    public int getIfIcmpeq() {
+        return ifIcmpeq;
     }
 
-    public void setIfIcmpge(int ifIcmpge) {
-        this.ifIcmpge = ifIcmpge;
+    public int getIfIcmpge() {
+        return ifIcmpge;
     }
 
     public int getIfIcmpgt() {
         return ifIcmpgt;
     }
 
-    public void setIfIcmpgt(int ifIcmpgt) {
-        this.ifIcmpgt = ifIcmpgt;
-    }
-
     public int getIfIcmple() {
         return ifIcmple;
     }
 
-    public void setIfIcmple(int ifIcmple) {
-        this.ifIcmple = ifIcmple;
-    }
-
     public int getIfIcmplt() {
         return ifIcmplt;
     }
 
-    public void setIfIcmplt(int ifIcmplt) {
-        this.ifIcmplt = ifIcmplt;
-    }
-
     public int getIfIcmpne() {
         return ifIcmpne;
     }
 
-    public void setIfIcmpne(int ifIcmpne) {
-        this.ifIcmpne = ifIcmpne;
-    }
-
-    public int getIfeq() {
-        return ifeq;
-    }
-
-    public void setIfeq(int ifeq) {
-        this.ifeq = ifeq;
-    }
-
-    public int getIfge() {
-        return ifge;
-    }
-
-    public void setIfge(int ifge) {
-        this.ifge = ifge;
-    }
-
-    public int getIfgt() {
-        return ifgt;
-    }
-
-    public void setIfgt(int ifgt) {
-        this.ifgt = ifgt;
-    }
-
     public int getIfInstruction() {
         return ifInstruction;
     }
 
-    public void setIfInstruction(int ifInstruction) {
-        this.ifInstruction = ifInstruction;
-    }
-
     public int getIfle() {
         return ifle;
     }
 
-    public void setIfle(int ifle) {
-        this.ifle = ifle;
-    }
-
     public int getIflt() {
         return iflt;
     }
 
-    public void setIflt(int iflt) {
-        this.iflt = iflt;
-    }
-
     public int getIfne() {
         return ifne;
     }
 
-    public void setIfne(int ifne) {
-        this.ifne = ifne;
-    }
-
     public int getIfnonnull() {
         return ifnonnull;
     }
 
-    public void setIfnonnull(int ifnonnull) {
-        this.ifnonnull = ifnonnull;
-    }
-
     public int getIfnull() {
         return ifnull;
     }
 
-    public void setIfnull(int ifnull) {
-        this.ifnull = ifnull;
-    }
-
     public int getIinc() {
         return iinc;
     }
 
-    public void setIinc(int iinc) {
-        this.iinc = iinc;
-    }
-
     public int getIload() {
         return iload;
     }
 
-    public void setIload(int iload) {
-        this.iload = iload;
-    }
-
     public int getImpdep1() {
         return impdep1;
     }
 
-    public void setImpdep1(int impdep1) {
-        this.impdep1 = impdep1;
-    }
-
     public int getImpdep2() {
         return impdep2;
     }
 
-    public void setImpdep2(int impdep2) {
-        this.impdep2 = impdep2;
-    }
-
     public int getImul() {
         return imul;
     }
 
-    public void setImul(int imul) {
-        this.imul = imul;
-    }
-
     public int getIneg() {
         return ineg;
     }
 
-    public void setIneg(int ineg) {
-        this.ineg = ineg;
-    }
-
     public int getInstanceOf() {
         return instanceOf;
     }
 
-    public void setInstanceOf(int instanceOf) {
-        this.instanceOf = instanceOf;
-    }
-
     public int getInvokedynamic() {
         return invokedynamic;
     }
 
-    public void setInvokedynamic(int invokedynamic) {
-        this.invokedynamic = invokedynamic;
-    }
-
     public int getInvokeInstruction() {
         return invokeInstruction;
     }
 
-    public void setInvokeInstruction(int invokeInstruction) {
-        this.invokeInstruction = invokeInstruction;
-    }
-
     public int getInvokeinterface() {
         return invokeinterface;
     }
 
-    public void setInvokeinterface(int invokeinterface) {
-        this.invokeinterface = invokeinterface;
-    }
-
     public int getInvokespecial() {
         return invokespecial;
     }
 
-    public void setInvokespecial(int invokespecial) {
-        this.invokespecial = invokespecial;
-    }
-
     public int getInvokestatic() {
         return invokestatic;
     }
 
-    public void setInvokestatic(int invokestatic) {
-        this.invokestatic = invokestatic;
-    }
-
     public int getInvokevirtual() {
         return invokevirtual;
     }
 
-    public void setInvokevirtual(int invokevirtual) {
-        this.invokevirtual = invokevirtual;
-    }
-
     public int getIor() {
         return ior;
     }
 
-    public void setIor(int ior) {
-        this.ior = ior;
-    }
-
     public int getIrem() {
         return irem;
     }
 
-    public void setIrem(int irem) {
-        this.irem = irem;
-    }
-
     public int getIreturn() {
         return ireturn;
     }
 
-    public void setIreturn(int ireturn) {
-        this.ireturn = ireturn;
-    }
-
     public int getIshl() {
         return ishl;
     }
 
-    public void setIshl(int ishl) {
-        this.ishl = ishl;
-    }
-
     public int getIshr() {
         return ishr;
     }
 
-    public void setIshr(int ishr) {
-        this.ishr = ishr;
-    }
-
     public int getIstore() {
         return istore;
     }
 
-    public void setIstore(int istore) {
-        this.istore = istore;
-    }
-
     public int getIsub() {
         return isub;
     }
 
-    public void setIsub(int isub) {
-        this.isub = isub;
-    }
-
     public int getIushr() {
         return iushr;
     }
 
+    public int getIxor() {
+        return ixor;
+    }
+
+    public int getJsr() {
+        return jsr;
+    }
+
+    public int getJsrInstruction() {
+        return jsrInstruction;
+    }
+
+    public int getJsrW() {
+        return jsrW;
+    }
+
+    public int getL2D() {
+        return l2D;
+    }
+
+    public int getL2F() {
+        return l2F;
+    }
+
+    public int getL2I() {
+        return l2I;
+    }
+
+    public int getLadd() {
+        return ladd;
+    }
+
+    public int getLaload() {
+        return laload;
+    }
+
+    public int getLand() {
+        return land;
+    }
+
+    public int getLastore() {
+        return lastore;
+    }
+
+    public int getLcmp() {
+        return lcmp;
+    }
+
+    public int getLconst() {
+        return lconst;
+    }
+
+    public int getLdc() {
+        return ldc;
+    }
+
+    public int getLdc2W() {
+        return ldc2W;
+    }
+
+    public int getLdiv() {
+        return ldiv;
+    }
+
+    public int getLload() {
+        return lload;
+    }
+
+    public int getLmul() {
+        return lmul;
+    }
+
+    public int getLneg() {
+        return lneg;
+    }
+
+    public int getLoadClass() {
+        return loadClass;
+    }
+
+    public int getLoadInstruction() {
+        return loadInstruction;
+    }
+
+    public int getLocalVariableInstruction() {
+        return localVariableInstruction;
+    }
+
+    public int getLookupswitch() {
+        return lookupswitch;
+    }
+
+    public int getLor() {
+        return lor;
+    }
+
+    public int getLrem() {
+        return lrem;
+    }
+
+    public int getLreturn() {
+        return lreturn;
+    }
+
+    public int getLshl() {
+        return lshl;
+    }
+
+    public int getLshr() {
+        return lshr;
+    }
+
+    public int getLstore() {
+        return lstore;
+    }
+
+    public int getLsub() {
+        return lsub;
+    }
+
+    public int getLushr() {
+        return lushr;
+    }
+
+    public int getLxor() {
+        return lxor;
+    }
+
+    public int getMonitorenter() {
+        return monitorenter;
+    }
+
+    public int getMonitorexit() {
+        return monitorexit;
+    }
+
+    public int getMultianewarray() {
+        return multianewarray;
+    }
+
+    public int getnEW() {
+        return newCount;
+    }
+
+    public int getNewarray() {
+        return newarray;
+    }
+
+    public int getNop() {
+        return nop;
+    }
+
+    public int getPop() {
+        return pop;
+    }
+
+    public int getPop2() {
+        return pop2;
+    }
+
+    public int getPopInstruction() {
+        return popInstruction;
+    }
+
+    public int getPushInstruction() {
+        return pushInstruction;
+    }
+
+    public int getPutfield() {
+        return putfield;
+    }
+
+    public int getPutstatic() {
+        return putstatic;
+    }
+
+    public int getRet() {
+        return ret;
+    }
+
+    public int getrETURN() {
+        return returnCount;
+    }
+
+    public int getReturnInstruction() {
+        return returnInstruction;
+    }
+
+    public int getSaload() {
+        return saload;
+    }
+
+    public int getSastore() {
+        return sastore;
+    }
+
+    public int getSelect() {
+        return select;
+    }
+
+    public int getSipush() {
+        return sipush;
+    }
+
+    public int getStackConsumer() {
+        return stackConsumer;
+    }
+
+    public int getStackInstruction() {
+        return stackInstruction;
+    }
+
+    public int getStackProducer() {
+        return stackProducer;
+    }
+
+    public int getStoreInstruction() {
+        return storeInstruction;
+    }
+
+    public int getSwap() {
+        return swap;
+    }
+
+    public int getTableswitch() {
+        return tableswitch;
+    }
+
+    public int getTypedInstruction() {
+        return typedInstruction;
+    }
+
+    public int getUnconditionalBranch() {
+        return unconditionalBranch;
+    }
+
+    public int getVariableLengthInstruction() {
+        return variableLengthInstruction;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(aaload, aastore, aconstNull, allocationInstruction, aload, anewarray, areturn, arithmeticInstruction, arrayInstruction, arraylength,
+                astore, athrow, baload, bastore, bipush, branchInstruction, breakpoint, caload, castore, checkcast, constantPushInstruction,
+                conversionInstruction, cpInstruction, d2F, d2I, d2L, dadd, daload, dastore, dcmpg, dcmpl, dconst, ddiv, dload, dmul, dneg, drem, dreturn,
+                dstore, dsub, dup, dup2, dup2X1, dup2X2, dupX1, dupX2, exceptionThrower, f2D, f2I, f2L, fadd, faload, fastore, fcmpg, fcmpl, fconst, fdiv,
+                fieldInstruction, fieldOrMethod, fload, fmul, fneg, frem, freturn, fstore, fsub, getfield, getstatic, goTo, gotoInstruction, gotoW, i2B, i2C,
+                i2D, i2F, i2L, i2S, iadd, iaload, iand, iastore, iconst, idiv, ifAcmpeq, ifAcmpne, ifIcmpeq, ifIcmpge, ifIcmpgt, ifIcmple, ifIcmplt, ifIcmpne,
+                ifInstruction, ifeq, ifge, ifgt, ifle, iflt, ifne, ifnonnull, ifnull, iinc, iload, impdep1, impdep2, imul, ineg, instanceOf, invokeInstruction,
+                invokedynamic, invokeinterface, invokespecial, invokestatic, invokevirtual, ior, irem, ireturn, ishl, ishr, istore, isub, iushr, ixor, jsr,
+                jsrInstruction, jsrW, l2D, l2F, l2I, ladd, laload, land, lastore, lcmp, lconst, ldc, ldc2W, ldiv, lload, lmul, lneg, loadClass, loadInstruction,
+                localVariableInstruction, lookupswitch, lor, lrem, lreturn, lshl, lshr, lstore, lsub, lushr, lxor, monitorenter, monitorexit, multianewarray,
+                newCount, newarray, nop, pop, pop2, popInstruction, pushInstruction, putfield, putstatic, ret, returnCount, returnInstruction, saload, sastore,
+                select, sipush, stackConsumer, stackInstruction, stackProducer, storeInstruction, swap, tableswitch, typedInstruction, unconditionalBranch,
+                variableLengthInstruction);
+    }
+
+    public void setAaload(int aaload) {
+        this.aaload = aaload;
+    }
+
+    public void setAastore(int aastore) {
+        this.aastore = aastore;
+    }
+
+    public void setAconstNull(int aconstNull) {
+        this.aconstNull = aconstNull;
+    }
+
+    public void setAllocationInstruction(int allocationInstruction) {
+        this.allocationInstruction = allocationInstruction;
+    }
+
+    public void setAload(int aload) {
+        this.aload = aload;
+    }
+
+    public void setAnewarray(int anewarray) {
+        this.anewarray = anewarray;
+    }
+
+    public void setAreturn(int areturn) {
+        this.areturn = areturn;
+    }
+
+    public void setArithmeticInstruction(int arithmeticInstruction) {
+        this.arithmeticInstruction = arithmeticInstruction;
+    }
+
+    public void setArrayInstruction(int arrayInstruction) {
+        this.arrayInstruction = arrayInstruction;
+    }
+
+    public void setArraylength(int arraylength) {
+        this.arraylength = arraylength;
+    }
+
+    public void setAstore(int astore) {
+        this.astore = astore;
+    }
+
+    public void setAthrow(int athrow) {
+        this.athrow = athrow;
+    }
+
+    public void setBaload(int baload) {
+        this.baload = baload;
+    }
+
+    public void setBastore(int bastore) {
+        this.bastore = bastore;
+    }
+
+    public void setBipush(int bipush) {
+        this.bipush = bipush;
+    }
+
+    public void setBranchInstruction(int branchInstruction) {
+        this.branchInstruction = branchInstruction;
+    }
+
+    public void setBreakpoint(int breakpoint) {
+        this.breakpoint = breakpoint;
+    }
+
+    public void setCaload(int caload) {
+        this.caload = caload;
+    }
+
+    public void setCastore(int castore) {
+        this.castore = castore;
+    }
+
+    public void setCheckcast(int checkcast) {
+        this.checkcast = checkcast;
+    }
+
+    public void setConstantPushInstruction(int constantPushInstruction) {
+        this.constantPushInstruction = constantPushInstruction;
+    }
+
+    public void setConversionInstruction(int conversionInstruction) {
+        this.conversionInstruction = conversionInstruction;
+    }
+
+    public void setCpInstruction(int cpInstruction) {
+        this.cpInstruction = cpInstruction;
+    }
+
+    public void setD2F(int d2F) {
+        this.d2F = d2F;
+    }
+
+    public void setD2I(int d2I) {
+        this.d2I = d2I;
+    }
+
+    public void setD2L(int d2L) {
+        this.d2L = d2L;
+    }
+
+    public void setDadd(int dadd) {
+        this.dadd = dadd;
+    }
+
+    public void setDaload(int daload) {
+        this.daload = daload;
+    }
+
+    public void setDastore(int dastore) {
+        this.dastore = dastore;
+    }
+
+    public void setDcmpg(int dcmpg) {
+        this.dcmpg = dcmpg;
+    }
+
+    public void setDcmpl(int dcmpl) {
+        this.dcmpl = dcmpl;
+    }
+
+    public void setDconst(int dconst) {
+        this.dconst = dconst;
+    }
+
+    public void setDdiv(int ddiv) {
+        this.ddiv = ddiv;
+    }
+
+    public void setDload(int dload) {
+        this.dload = dload;
+    }
+
+    public void setDmul(int dmul) {
+        this.dmul = dmul;
+    }
+
+    public void setDneg(int dneg) {
+        this.dneg = dneg;
+    }
+
+    public void setDrem(int drem) {
+        this.drem = drem;
+    }
+
+    public void setDreturn(int dreturn) {
+        this.dreturn = dreturn;
+    }
+
+    public void setDstore(int dstore) {
+        this.dstore = dstore;
+    }
+
+    public void setDsub(int dsub) {
+        this.dsub = dsub;
+    }
+
+    public void setDup(int dup) {
+        this.dup = dup;
+    }
+
+    public void setDup2(int dup2) {
+        this.dup2 = dup2;
+    }
+
+    public void setDup2X1(int dup2X1) {
+        this.dup2X1 = dup2X1;
+    }
+
+    public void setDup2X2(int dup2X2) {
+        this.dup2X2 = dup2X2;
+    }
+
+    public void setDupX1(int dupX1) {
+        this.dupX1 = dupX1;
+    }
+
+    public void setDupX2(int dupX2) {
+        this.dupX2 = dupX2;
+    }
+
+    public void setExceptionThrower(int exceptionThrower) {
+        this.exceptionThrower = exceptionThrower;
+    }
+
+    public void setF2D(int f2D) {
+        this.f2D = f2D;
+    }
+
+    public void setF2I(int f2I) {
+        this.f2I = f2I;
+    }
+
+    public void setF2L(int f2L) {
+        this.f2L = f2L;
+    }
+
+    public void setFadd(int fadd) {
+        this.fadd = fadd;
+    }
+
+    public void setFaload(int faload) {
+        this.faload = faload;
+    }
+
+    public void setFastore(int fastore) {
+        this.fastore = fastore;
+    }
+
+    public void setFcmpg(int fcmpg) {
+        this.fcmpg = fcmpg;
+    }
+
+    public void setFcmpl(int fcmpl) {
+        this.fcmpl = fcmpl;
+    }
+
+    public void setFconst(int fconst) {
+        this.fconst = fconst;
+    }
+
+    public void setFdiv(int fdiv) {
+        this.fdiv = fdiv;
+    }
+
+    public void setFieldInstruction(int fieldInstruction) {
+        this.fieldInstruction = fieldInstruction;
+    }
+
+    public void setFieldOrMethod(int fieldOrMethod) {
+        this.fieldOrMethod = fieldOrMethod;
+    }
+
+    public void setFload(int fload) {
+        this.fload = fload;
+    }
+
+    public void setFmul(int fmul) {
+        this.fmul = fmul;
+    }
+
+    public void setFneg(int fneg) {
+        this.fneg = fneg;
+    }
+
+    public void setFrem(int frem) {
+        this.frem = frem;
+    }
+
+    public void setFreturn(int freturn) {
+        this.freturn = freturn;
+    }
+
+    public void setFstore(int fstore) {
+        this.fstore = fstore;
+    }
+
+    public void setFsub(int fsub) {
+        this.fsub = fsub;
+    }
+
+    public void setGetfield(int getfield) {
+        this.getfield = getfield;
+    }
+
+    public void setGetstatic(int getstatic) {
+        this.getstatic = getstatic;
+    }
+
+    public void setGoTo(int goTo) {
+        this.goTo = goTo;
+    }
+
+    public void setGotoInstruction(int gotoInstruction) {
+        this.gotoInstruction = gotoInstruction;
+    }
+
+    public void setGotoW(int gotoW) {
+        this.gotoW = gotoW;
+    }
+
+    public void setI2B(int i2B) {
+        this.i2B = i2B;
+    }
+
+    public void setI2C(int i2C) {
+        this.i2C = i2C;
+    }
+
+    public void setI2D(int i2D) {
+        this.i2D = i2D;
+    }
+
+    public void setI2F(int i2F) {
+        this.i2F = i2F;
+    }
+
+    public void setI2L(int i2L) {
+        this.i2L = i2L;
+    }
+
+    public void setI2S(int i2S) {
+        this.i2S = i2S;
+    }
+
+    public void setIadd(int iadd) {
+        this.iadd = iadd;
+    }
+
+    public void setIaload(int iaload) {
+        this.iaload = iaload;
+    }
+
+    public void setIand(int iand) {
+        this.iand = iand;
+    }
+
+    public void setIastore(int iastore) {
+        this.iastore = iastore;
+    }
+
+    public void setIconst(int iconst) {
+        this.iconst = iconst;
+    }
+
+    public void setIdiv(int idiv) {
+        this.idiv = idiv;
+    }
+
+    public void setIfAcmpeq(int ifAcmpeq) {
+        this.ifAcmpeq = ifAcmpeq;
+    }
+
+    public void setIfAcmpne(int ifAcmpne) {
+        this.ifAcmpne = ifAcmpne;
+    }
+
+    public void setIfeq(int ifeq) {
+        this.ifeq = ifeq;
+    }
+
+    public void setIfge(int ifge) {
+        this.ifge = ifge;
+    }
+
+    public void setIfgt(int ifgt) {
+        this.ifgt = ifgt;
+    }
+
+    public void setIfIcmpeq(int ifIcmpeq) {
+        this.ifIcmpeq = ifIcmpeq;
+    }
+
+    public void setIfIcmpge(int ifIcmpge) {
+        this.ifIcmpge = ifIcmpge;
+    }
+
+    public void setIfIcmpgt(int ifIcmpgt) {
+        this.ifIcmpgt = ifIcmpgt;
+    }
+
+    public void setIfIcmple(int ifIcmple) {
+        this.ifIcmple = ifIcmple;
+    }
+
+    public void setIfIcmplt(int ifIcmplt) {
+        this.ifIcmplt = ifIcmplt;
+    }
+
+    public void setIfIcmpne(int ifIcmpne) {
+        this.ifIcmpne = ifIcmpne;
+    }
+
+    public void setIfInstruction(int ifInstruction) {
+        this.ifInstruction = ifInstruction;
+    }
+
+    public void setIfle(int ifle) {
+        this.ifle = ifle;
+    }
+
+    public void setIflt(int iflt) {
+        this.iflt = iflt;
+    }
+
+    public void setIfne(int ifne) {
+        this.ifne = ifne;
+    }
+
+    public void setIfnonnull(int ifnonnull) {
+        this.ifnonnull = ifnonnull;
+    }
+
+    public void setIfnull(int ifnull) {
+        this.ifnull = ifnull;
+    }
+
+    public void setIinc(int iinc) {
+        this.iinc = iinc;
+    }
+
+    public void setIload(int iload) {
+        this.iload = iload;
+    }
+
+    public void setImpdep1(int impdep1) {
+        this.impdep1 = impdep1;
+    }
+
+    public void setImpdep2(int impdep2) {
+        this.impdep2 = impdep2;
+    }
+
+    public void setImul(int imul) {
+        this.imul = imul;
+    }
+
+    public void setIneg(int ineg) {
+        this.ineg = ineg;
+    }
+
+    public void setInstanceOf(int instanceOf) {
+        this.instanceOf = instanceOf;
+    }
+
+    public void setInvokedynamic(int invokedynamic) {
+        this.invokedynamic = invokedynamic;
+    }
+
+    public void setInvokeInstruction(int invokeInstruction) {
+        this.invokeInstruction = invokeInstruction;
+    }
+
+    public void setInvokeinterface(int invokeinterface) {
+        this.invokeinterface = invokeinterface;
+    }
+
+    public void setInvokespecial(int invokespecial) {
+        this.invokespecial = invokespecial;
+    }
+
+    public void setInvokestatic(int invokestatic) {
+        this.invokestatic = invokestatic;
+    }
+
+    public void setInvokevirtual(int invokevirtual) {
+        this.invokevirtual = invokevirtual;
+    }
+
+    public void setIor(int ior) {
+        this.ior = ior;
+    }
+
+    public void setIrem(int irem) {
+        this.irem = irem;
+    }
+
+    public void setIreturn(int ireturn) {
+        this.ireturn = ireturn;
+    }
+
+    public void setIshl(int ishl) {
+        this.ishl = ishl;
+    }
+
+    public void setIshr(int ishr) {
+        this.ishr = ishr;
+    }
+
+    public void setIstore(int istore) {
+        this.istore = istore;
+    }
+
+    public void setIsub(int isub) {
+        this.isub = isub;
+    }
+
     public void setIushr(int iushr) {
         this.iushr = iushr;
     }
 
-    public int getIxor() {
-        return ixor;
-    }
-
     public void setIxor(int ixor) {
         this.ixor = ixor;
     }
 
-    public int getJsr() {
-        return jsr;
-    }
-
     public void setJsr(int jsr) {
         this.jsr = jsr;
     }
 
-    public int getJsrW() {
-        return jsrW;
-    }
-
-    public void setJsrW(int jsrW) {
-        this.jsrW = jsrW;
-    }
-
-    public int getJsrInstruction() {
-        return jsrInstruction;
-    }
-
     public void setJsrInstruction(int jsrInstruction) {
         this.jsrInstruction = jsrInstruction;
     }
 
-    public int getL2D() {
-        return l2D;
+    public void setJsrW(int jsrW) {
+        this.jsrW = jsrW;
     }
 
     public void setL2D(int l2D) {
         this.l2D = l2D;
     }
 
-    public int getL2F() {
-        return l2F;
-    }
-
     public void setL2F(int l2F) {
         this.l2F = l2F;
     }
 
-    public int getL2I() {
-        return l2I;
-    }
-
     public void setL2I(int l2I) {
         this.l2I = l2I;
     }
 
-    public int getLadd() {
-        return ladd;
-    }
-
     public void setLadd(int ladd) {
         this.ladd = ladd;
     }
 
-    public int getLaload() {
-        return laload;
-    }
-
     public void setLaload(int laload) {
         this.laload = laload;
     }
 
-    public int getLand() {
-        return land;
-    }
-
     public void setLand(int land) {
         this.land = land;
     }
 
-    public int getLastore() {
-        return lastore;
-    }
-
     public void setLastore(int lastore) {
         this.lastore = lastore;
     }
 
-    public int getLcmp() {
-        return lcmp;
-    }
-
     public void setLcmp(int lcmp) {
         this.lcmp = lcmp;
     }
 
-    public int getLconst() {
-        return lconst;
-    }
-
     public void setLconst(int lconst) {
         this.lconst = lconst;
     }
 
-    public int getLdc() {
-        return ldc;
-    }
-
     public void setLdc(int ldc) {
         this.ldc = ldc;
     }
 
-    public int getLdc2W() {
-        return ldc2W;
-    }
-
     public void setLdc2W(int ldc2W) {
         this.ldc2W = ldc2W;
     }
 
-    public int getLdiv() {
-        return ldiv;
-    }
-
     public void setLdiv(int ldiv) {
         this.ldiv = ldiv;
     }
 
-    public int getLload() {
-        return lload;
-    }
-
     public void setLload(int lload) {
         this.lload = lload;
     }
 
-    public int getLmul() {
-        return lmul;
-    }
-
     public void setLmul(int lmul) {
         this.lmul = lmul;
     }
 
-    public int getLneg() {
-        return lneg;
-    }
-
     public void setLneg(int lneg) {
         this.lneg = lneg;
     }
 
-    public int getLoadClass() {
-        return loadClass;
-    }
-
     public void setLoadClass(int loadClass) {
         this.loadClass = loadClass;
     }
 
-    public int getLoadInstruction() {
-        return loadInstruction;
-    }
-
     public void setLoadInstruction(int loadInstruction) {
         this.loadInstruction = loadInstruction;
     }
 
-    public int getLocalVariableInstruction() {
-        return localVariableInstruction;
-    }
-
     public void setLocalVariableInstruction(int localVariableInstruction) {
         this.localVariableInstruction = localVariableInstruction;
     }
 
-    public int getLookupswitch() {
-        return lookupswitch;
-    }
-
     public void setLookupswitch(int lookupswitch) {
         this.lookupswitch = lookupswitch;
     }
 
-    public int getLor() {
-        return lor;
-    }
-
     public void setLor(int lor) {
         this.lor = lor;
     }
 
-    public int getLrem() {
-        return lrem;
-    }
-
     public void setLrem(int lrem) {
         this.lrem = lrem;
     }
 
-    public int getLreturn() {
-        return lreturn;
-    }
-
     public void setLreturn(int lreturn) {
         this.lreturn = lreturn;
     }
 
-    public int getLshl() {
-        return lshl;
-    }
-
     public void setLshl(int lshl) {
         this.lshl = lshl;
     }
 
-    public int getLshr() {
-        return lshr;
-    }
-
     public void setLshr(int lshr) {
         this.lshr = lshr;
     }
 
-    public int getLstore() {
-        return lstore;
-    }
-
     public void setLstore(int lstore) {
         this.lstore = lstore;
     }
 
-    public int getLsub() {
-        return lsub;
-    }
-
     public void setLsub(int lsub) {
         this.lsub = lsub;
     }
 
-    public int getLushr() {
-        return lushr;
-    }
-
     public void setLushr(int lushr) {
         this.lushr = lushr;
     }
 
-    public int getLxor() {
-        return lxor;
-    }
-
     public void setLxor(int lxor) {
         this.lxor = lxor;
     }
 
-    public int getMonitorenter() {
-        return monitorenter;
-    }
-
     public void setMonitorenter(int monitorenter) {
         this.monitorenter = monitorenter;
     }
 
-    public int getMonitorexit() {
-        return monitorexit;
-    }
-
     public void setMonitorexit(int monitorexit) {
         this.monitorexit = monitorexit;
     }
 
-    public int getMultianewarray() {
-        return multianewarray;
-    }
-
     public void setMultianewarray(int multianewarray) {
         this.multianewarray = multianewarray;
     }
 
-    public int getnEW() {
-        return nEW;
-    }
-
     public void setnEW(int nEW) {
-        this.nEW = nEW;
-    }
-
-    public int getNewarray() {
-        return newarray;
+        this.newCount = nEW;
     }
 
     public void setNewarray(int newarray) {
         this.newarray = newarray;
     }
 
-    public int getNop() {
-        return nop;
-    }
-
     public void setNop(int nop) {
         this.nop = nop;
     }
 
-    public int getPop() {
-        return pop;
-    }
-
     public void setPop(int pop) {
         this.pop = pop;
     }
 
-    public int getPop2() {
-        return pop2;
-    }
-
     public void setPop2(int pop2) {
         this.pop2 = pop2;
     }
 
-    public int getPopInstruction() {
-        return popInstruction;
-    }
-
     public void setPopInstruction(int popInstruction) {
         this.popInstruction = popInstruction;
     }
 
-    public int getPushInstruction() {
-        return pushInstruction;
-    }
-
     public void setPushInstruction(int pushInstruction) {
         this.pushInstruction = pushInstruction;
     }
 
-    public int getPutfield() {
-        return putfield;
-    }
-
     public void setPutfield(int putfield) {
         this.putfield = putfield;
     }
 
-    public int getPutstatic() {
-        return putstatic;
-    }
-
     public void setPutstatic(int putstatic) {
         this.putstatic = putstatic;
     }
 
-    public int getRet() {
-        return ret;
-    }
-
     public void setRet(int ret) {
         this.ret = ret;
     }
 
-    public int getrETURN() {
-        return rETURN;
-    }
-
     public void setrETURN(int rETURN) {
-        this.rETURN = rETURN;
-    }
-
-    public int getReturnInstruction() {
-        return returnInstruction;
+        this.returnCount = rETURN;
     }
 
     public void setReturnInstruction(int returnInstruction) {
         this.returnInstruction = returnInstruction;
     }
 
-    public int getSaload() {
-        return saload;
-    }
-
     public void setSaload(int saload) {
         this.saload = saload;
     }
 
-    public int getSastore() {
-        return sastore;
-    }
-
     public void setSastore(int sastore) {
         this.sastore = sastore;
     }
 
-    public int getSelect() {
-        return select;
-    }
-
     public void setSelect(int select) {
         this.select = select;
     }
 
-    public int getSipush() {
-        return sipush;
-    }
-
     public void setSipush(int sipush) {
         this.sipush = sipush;
     }
 
-    public int getStackConsumer() {
-        return stackConsumer;
-    }
-
     public void setStackConsumer(int stackConsumer) {
         this.stackConsumer = stackConsumer;
     }
 
-    public int getStackInstruction() {
-        return stackInstruction;
-    }
-
     public void setStackInstruction(int stackInstruction) {
         this.stackInstruction = stackInstruction;
     }
 
-    public int getStackProducer() {
-        return stackProducer;
-    }
-
     public void setStackProducer(int stackProducer) {
         this.stackProducer = stackProducer;
     }
 
-    public int getStoreInstruction() {
-        return storeInstruction;
-    }
-
     public void setStoreInstruction(int storeInstruction) {
         this.storeInstruction = storeInstruction;
     }
 
-    public int getSwap() {
-        return swap;
-    }
-
     public void setSwap(int swap) {
         this.swap = swap;
     }
 
-    public int getTableswitch() {
-        return tableswitch;
-    }
-
     public void setTableswitch(int tableswitch) {
         this.tableswitch = tableswitch;
     }
 
-    public int getTypedInstruction() {
-        return typedInstruction;
-    }
-
     public void setTypedInstruction(int typedInstruction) {
         this.typedInstruction = typedInstruction;
     }
 
-    public int getUnconditionalBranch() {
-        return unconditionalBranch;
-    }
-
     public void setUnconditionalBranch(int unconditionalBranch) {
         this.unconditionalBranch = unconditionalBranch;
     }
 
-    public int getVariableLengthInstruction() {
-        return variableLengthInstruction;
-    }
-
     public void setVariableLengthInstruction(int variableLengthInstruction) {
         this.variableLengthInstruction = variableLengthInstruction;
     }
 
+    @Override
+    public String toString() {
+        return "CountingVisitor [aaload=" + aaload + ", aastore=" + aastore + ", aconstNull=" + aconstNull + ", allocationInstruction=" + allocationInstruction
+                + ", aload=" + aload + ", anewarray=" + anewarray + ", areturn=" + areturn + ", arithmeticInstruction=" + arithmeticInstruction
+                + ", arrayInstruction=" + arrayInstruction + ", arraylength=" + arraylength + ", astore=" + astore + ", athrow=" + athrow + ", baload=" + baload
+                + ", bastore=" + bastore + ", bipush=" + bipush + ", branchInstruction=" + branchInstruction + ", breakpoint=" + breakpoint + ", caload="
+                + caload + ", castore=" + castore + ", checkcast=" + checkcast + ", constantPushInstruction=" + constantPushInstruction
+                + ", conversionInstruction=" + conversionInstruction + ", cpInstruction=" + cpInstruction + ", d2F=" + d2F + ", d2I=" + d2I + ", d2L=" + d2L
+                + ", dadd=" + dadd + ", daload=" + daload + ", dastore=" + dastore + ", dcmpg=" + dcmpg + ", dcmpl=" + dcmpl + ", dconst=" + dconst + ", ddiv="
+                + ddiv + ", dload=" + dload + ", dmul=" + dmul + ", dneg=" + dneg + ", drem=" + drem + ", dreturn=" + dreturn + ", dstore=" + dstore + ", dsub="
+                + dsub + ", dup=" + dup + ", dupX1=" + dupX1 + ", dupX2=" + dupX2 + ", dup2=" + dup2 + ", dup2X1=" + dup2X1 + ", dup2X2=" + dup2X2
+                + ", exceptionThrower=" + exceptionThrower + ", f2D=" + f2D + ", f2I=" + f2I + ", f2L=" + f2L + ", fadd=" + fadd + ", faload=" + faload
+                + ", fastore=" + fastore + ", fcmpg=" + fcmpg + ", fcmpl=" + fcmpl + ", fconst=" + fconst + ", fdiv=" + fdiv + ", fieldInstruction="
+                + fieldInstruction + ", fieldOrMethod=" + fieldOrMethod + ", fload=" + fload + ", fmul=" + fmul + ", fneg=" + fneg + ", frem=" + frem
+                + ", freturn=" + freturn + ", fstore=" + fstore + ", fsub=" + fsub + ", getfield=" + getfield + ", getstatic=" + getstatic + ", goTo=" + goTo
+                + ", gotoW=" + gotoW + ", gotoInstruction=" + gotoInstruction + ", i2B=" + i2B + ", i2C=" + i2C + ", i2D=" + i2D + ", i2F=" + i2F + ", i2L="
+                + i2L + ", i2S=" + i2S + ", iadd=" + iadd + ", iaload=" + iaload + ", iand=" + iand + ", iastore=" + iastore + ", iconst=" + iconst + ", idiv="
+                + idiv + ", ifAcmpeq=" + ifAcmpeq + ", ifAcmpne=" + ifAcmpne + ", ifIcmpeq=" + ifIcmpeq + ", ifIcmpge=" + ifIcmpge + ", ifIcmpgt=" + ifIcmpgt
+                + ", ifIcmple=" + ifIcmple + ", ifIcmplt=" + ifIcmplt + ", ifIcmpne=" + ifIcmpne + ", ifeq=" + ifeq + ", ifge=" + ifge + ", ifgt=" + ifgt
+                + ", ifInstruction=" + ifInstruction + ", ifle=" + ifle + ", iflt=" + iflt + ", ifne=" + ifne + ", ifnonnull=" + ifnonnull + ", ifnull="
+                + ifnull + ", iinc=" + iinc + ", iload=" + iload + ", impdep1=" + impdep1 + ", impdep2=" + impdep2 + ", imul=" + imul + ", ineg=" + ineg
+                + ", instanceOf=" + instanceOf + ", invokedynamic=" + invokedynamic + ", invokeInstruction=" + invokeInstruction + ", invokeinterface="
+                + invokeinterface + ", invokespecial=" + invokespecial + ", invokestatic=" + invokestatic + ", invokevirtual=" + invokevirtual + ", ior=" + ior
+                + ", irem=" + irem + ", ireturn=" + ireturn + ", ishl=" + ishl + ", ishr=" + ishr + ", istore=" + istore + ", isub=" + isub + ", iushr=" + iushr
+                + ", ixor=" + ixor + ", jsr=" + jsr + ", jsrW=" + jsrW + ", jsrInstruction=" + jsrInstruction + ", l2D=" + l2D + ", l2F=" + l2F + ", l2I=" + l2I
+                + ", ladd=" + ladd + ", laload=" + laload + ", land=" + land + ", lastore=" + lastore + ", lcmp=" + lcmp + ", lconst=" + lconst + ", ldc=" + ldc
+                + ", ldc2W=" + ldc2W + ", ldiv=" + ldiv + ", lload=" + lload + ", lmul=" + lmul + ", lneg=" + lneg + ", loadClass=" + loadClass
+                + ", loadInstruction=" + loadInstruction + ", localVariableInstruction=" + localVariableInstruction + ", lookupswitch=" + lookupswitch
+                + ", lor=" + lor + ", lrem=" + lrem + ", lreturn=" + lreturn + ", lshl=" + lshl + ", lshr=" + lshr + ", lstore=" + lstore + ", lsub=" + lsub
+                + ", lushr=" + lushr + ", lxor=" + lxor + ", monitorenter=" + monitorenter + ", monitorexit=" + monitorexit + ", multianewarray="
+                + multianewarray + ", newCount=" + newCount + ", newarray=" + newarray + ", nop=" + nop + ", pop=" + pop + ", pop2=" + pop2
+                + ", popInstruction=" + popInstruction + ", pushInstruction=" + pushInstruction + ", putfield=" + putfield + ", putstatic=" + putstatic
+                + ", ret=" + ret + ", returnCount=" + returnCount + ", returnInstruction=" + returnInstruction + ", saload=" + saload + ", sastore=" + sastore
+                + ", select=" + select + ", sipush=" + sipush + ", stackConsumer=" + stackConsumer + ", stackInstruction=" + stackInstruction
+                + ", stackProducer=" + stackProducer + ", storeInstruction=" + storeInstruction + ", swap=" + swap + ", tableswitch=" + tableswitch
+                + ", typedInstruction=" + typedInstruction + ", unconditionalBranch=" + unconditionalBranch + ", variableLengthInstruction="
+                + variableLengthInstruction + "]";
+    }
+
     @Override
     public void visitAALOAD(AALOAD obj) {
         aaload++;
@@ -2621,7 +2539,7 @@ public class CountVisitor implements Visitor {
 
     @Override
     public void visitNEW(NEW obj) {
-        nEW++;
+        newCount++;
     }
 
     @Override
@@ -2671,7 +2589,7 @@ public class CountVisitor implements Visitor {
 
     @Override
     public void visitRETURN(RETURN obj) {
-        rETURN++;
+        returnCount++;
     }
 
     @Override
@@ -2744,378 +2662,5 @@ public class CountVisitor implements Visitor {
         variableLengthInstruction++;
     }
 
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-        CountVisitor that = (CountVisitor) o;
-        return aaload == that.aaload &&
-                aastore == that.aastore &&
-                aconstNull == that.aconstNull &&
-                allocationInstruction == that.allocationInstruction &&
-                aload == that.aload &&
-                anewarray == that.anewarray &&
-                areturn == that.areturn &&
-                arithmeticInstruction == that.arithmeticInstruction &&
-                arrayInstruction == that.arrayInstruction &&
-                arraylength == that.arraylength &&
-                astore == that.astore &&
-                athrow == that.athrow &&
-                baload == that.baload &&
-                bastore == that.bastore &&
-                bipush == that.bipush &&
-                branchInstruction == that.branchInstruction &&
-                breakpoint == that.breakpoint &&
-                caload == that.caload &&
-                castore == that.castore &&
-                checkcast == that.checkcast &&
-                constantPushInstruction == that.constantPushInstruction &&
-                conversionInstruction == that.conversionInstruction &&
-                cpInstruction == that.cpInstruction &&
-                d2F == that.d2F &&
-                d2I == that.d2I &&
-                d2L == that.d2L &&
-                dadd == that.dadd &&
-                daload == that.daload &&
-                dastore == that.dastore &&
-                dcmpg == that.dcmpg &&
-                dcmpl == that.dcmpl &&
-                dconst == that.dconst &&
-                ddiv == that.ddiv &&
-                dload == that.dload &&
-                dmul == that.dmul &&
-                dneg == that.dneg &&
-                drem == that.drem &&
-                dreturn == that.dreturn &&
-                dstore == that.dstore &&
-                dsub == that.dsub &&
-                dup == that.dup &&
-                dupX1 == that.dupX1 &&
-                dupX2 == that.dupX2 &&
-                dup2 == that.dup2 &&
-                dup2X1 == that.dup2X1 &&
-                dup2X2 == that.dup2X2 &&
-                exceptionThrower == that.exceptionThrower &&
-                f2D == that.f2D &&
-                f2I == that.f2I &&
-                f2L == that.f2L &&
-                fadd == that.fadd &&
-                faload == that.faload &&
-                fastore == that.fastore &&
-                fcmpg == that.fcmpg &&
-                fcmpl == that.fcmpl &&
-                fconst == that.fconst &&
-                fdiv == that.fdiv &&
-                fieldInstruction == that.fieldInstruction &&
-                fieldOrMethod == that.fieldOrMethod &&
-                fload == that.fload &&
-                fmul == that.fmul &&
-                fneg == that.fneg &&
-                frem == that.frem &&
-                freturn == that.freturn &&
-                fstore == that.fstore &&
-                fsub == that.fsub &&
-                getfield == that.getfield &&
-                getstatic == that.getstatic &&
-                goTo == that.goTo &&
-                gotoW == that.gotoW &&
-                gotoInstruction == that.gotoInstruction &&
-                i2B == that.i2B &&
-                i2C == that.i2C &&
-                i2D == that.i2D &&
-                i2F == that.i2F &&
-                i2L == that.i2L &&
-                i2S == that.i2S &&
-                iadd == that.iadd &&
-                iaload == that.iaload &&
-                iand == that.iand &&
-                iastore == that.iastore &&
-                iconst == that.iconst &&
-                idiv == that.idiv &&
-                ifAcmpeq == that.ifAcmpeq &&
-                ifAcmpne == that.ifAcmpne &&
-                ifIcmpeq == that.ifIcmpeq &&
-                ifIcmpge == that.ifIcmpge &&
-                ifIcmpgt == that.ifIcmpgt &&
-                ifIcmple == that.ifIcmple &&
-                ifIcmplt == that.ifIcmplt &&
-                ifIcmpne == that.ifIcmpne &&
-                ifeq == that.ifeq &&
-                ifge == that.ifge &&
-                ifgt == that.ifgt &&
-                ifInstruction == that.ifInstruction &&
-                ifle == that.ifle &&
-                iflt == that.iflt &&
-                ifne == that.ifne &&
-                ifnonnull == that.ifnonnull &&
-                ifnull == that.ifnull &&
-                iinc == that.iinc &&
-                iload == that.iload &&
-                impdep1 == that.impdep1 &&
-                impdep2 == that.impdep2 &&
-                imul == that.imul &&
-                ineg == that.ineg &&
-                instanceOf == that.instanceOf &&
-                invokedynamic == that.invokedynamic &&
-                invokeInstruction == that.invokeInstruction &&
-                invokeinterface == that.invokeinterface &&
-                invokespecial == that.invokespecial &&
-                invokestatic == that.invokestatic &&
-                invokevirtual == that.invokevirtual &&
-                ior == that.ior &&
-                irem == that.irem &&
-                ireturn == that.ireturn &&
-                ishl == that.ishl &&
-                ishr == that.ishr &&
-                istore == that.istore &&
-                isub == that.isub &&
-                iushr == that.iushr &&
-                ixor == that.ixor &&
-                jsr == that.jsr &&
-                jsrW == that.jsrW &&
-                jsrInstruction == that.jsrInstruction &&
-                l2D == that.l2D &&
-                l2F == that.l2F &&
-                l2I == that.l2I &&
-                ladd == that.ladd &&
-                laload == that.laload &&
-                land == that.land &&
-                lastore == that.lastore &&
-                lcmp == that.lcmp &&
-                lconst == that.lconst &&
-                ldc == that.ldc &&
-                ldc2W == that.ldc2W &&
-                ldiv == that.ldiv &&
-                lload == that.lload &&
-                lmul == that.lmul &&
-                lneg == that.lneg &&
-                loadClass == that.loadClass &&
-                loadInstruction == that.loadInstruction &&
-                localVariableInstruction == that.localVariableInstruction &&
-                lookupswitch == that.lookupswitch &&
-                lor == that.lor &&
-                lrem == that.lrem &&
-                lreturn == that.lreturn &&
-                lshl == that.lshl &&
-                lshr == that.lshr &&
-                lstore == that.lstore &&
-                lsub == that.lsub &&
-                lushr == that.lushr &&
-                lxor == that.lxor &&
-                monitorenter == that.monitorenter &&
-                monitorexit == that.monitorexit &&
-                multianewarray == that.multianewarray &&
-                nEW == that.nEW &&
-                newarray == that.newarray &&
-                nop == that.nop &&
-                pop == that.pop &&
-                pop2 == that.pop2 &&
-                popInstruction == that.popInstruction &&
-                pushInstruction == that.pushInstruction &&
-                putfield == that.putfield &&
-                putstatic == that.putstatic &&
-                ret == that.ret &&
-                rETURN == that.rETURN &&
-                returnInstruction == that.returnInstruction &&
-                saload == that.saload &&
-                sastore == that.sastore &&
-                select == that.select &&
-                sipush == that.sipush &&
-                stackConsumer == that.stackConsumer &&
-                stackInstruction == that.stackInstruction &&
-                stackProducer == that.stackProducer &&
-                storeInstruction == that.storeInstruction &&
-                swap == that.swap &&
-                tableswitch == that.tableswitch &&
-                typedInstruction == that.typedInstruction &&
-                unconditionalBranch == that.unconditionalBranch &&
-                variableLengthInstruction == that.variableLengthInstruction;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(aaload,
-                aastore,
-                aconstNull,
-                allocationInstruction,
-                aload,
-                anewarray,
-                areturn,
-                arithmeticInstruction,
-                arrayInstruction,
-                arraylength,
-                astore,
-                athrow,
-                baload,
-                bastore,
-                bipush,
-                branchInstruction,
-                breakpoint,
-                caload,
-                castore,
-                checkcast,
-                constantPushInstruction,
-                conversionInstruction,
-                cpInstruction,
-                d2F,
-                d2I,
-                d2L,
-                dadd,
-                daload,
-                dastore,
-                dcmpg,
-                dcmpl,
-                dconst,
-                ddiv,
-                dload,
-                dmul,
-                dneg,
-                drem,
-                dreturn,
-                dstore,
-                dsub,
-                dup,
-                dupX1,
-                dupX2,
-                dup2,
-                dup2X1,
-                dup2X2,
-                exceptionThrower,
-                f2D,
-                f2I,
-                f2L,
-                fadd,
-                faload,
-                fastore,
-                fcmpg,
-                fcmpl,
-                fconst,
-                fdiv,
-                fieldInstruction,
-                fieldOrMethod,
-                fload,
-                fmul,
-                fneg,
-                frem,
-                freturn,
-                fstore,
-                fsub,
-                getfield,
-                getstatic,
-                goTo,
-                gotoW,
-                gotoInstruction,
-                i2B,
-                i2C,
-                i2D,
-                i2F,
-                i2L,
-                i2S,
-                iadd,
-                iaload,
-                iand,
-                iastore,
-                iconst,
-                idiv,
-                ifAcmpeq,
-                ifAcmpne,
-                ifIcmpeq,
-                ifIcmpge,
-                ifIcmpgt,
-                ifIcmple,
-                ifIcmplt,
-                ifIcmpne,
-                ifeq,
-                ifge,
-                ifgt,
-                ifInstruction,
-                ifle,
-                iflt,
-                ifne,
-                ifnonnull,
-                ifnull,
-                iinc,
-                iload,
-                impdep1,
-                impdep2,
-                imul,
-                ineg,
-                instanceOf,
-                invokedynamic,
-                invokeInstruction,
-                invokeinterface,
-                invokespecial,
-                invokestatic,
-                invokevirtual,
-                ior,
-                irem,
-                ireturn,
-                ishl,
-                ishr,
-                istore,
-                isub,
-                iushr,
-                ixor,
-                jsr,
-                jsrW,
-                jsrInstruction,
-                l2D,
-                l2F,
-                l2I,
-                ladd,
-                laload,
-                land,
-                lastore,
-                lcmp,
-                lconst,
-                ldc,
-                ldc2W,
-                ldiv,
-                lload,
-                lmul,
-                lneg,
-                loadClass,
-                loadInstruction,
-                localVariableInstruction,
-                lookupswitch,
-                lor,
-                lrem,
-                lreturn,
-                lshl,
-                lshr,
-                lstore,
-                lsub,
-                lushr,
-                lxor,
-                monitorenter,
-                monitorexit,
-                multianewarray,
-                nEW,
-                newarray,
-                nop,
-                pop,
-                pop2,
-                popInstruction,
-                pushInstruction,
-                putfield,
-                putstatic,
-                ret,
-                rETURN,
-                returnInstruction,
-                saload,
-                sastore,
-                select,
-                sipush,
-                stackConsumer,
-                stackInstruction,
-                stackProducer,
-                storeInstruction,
-                swap,
-                tableswitch,
-                typedInstruction,
-                unconditionalBranch,
-                variableLengthInstruction);
-    }
-
 }
 
diff --git a/src/test/java/org/apache/bcel/generic/D2FTestCase.java b/src/test/java/org/apache/bcel/generic/D2FTestCase.java
index a5175b22..cd43ed78 100644
--- a/src/test/java/org/apache/bcel/generic/D2FTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/D2FTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class D2FTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final D2F d2f = new D2F();
         d2f.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/D2ITestCase.java b/src/test/java/org/apache/bcel/generic/D2ITestCase.java
index a097e764..7d27493b 100644
--- a/src/test/java/org/apache/bcel/generic/D2ITestCase.java
+++ b/src/test/java/org/apache/bcel/generic/D2ITestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class D2ITestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final D2I d2i = new D2I();
         d2i.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/D2LTestCase.java b/src/test/java/org/apache/bcel/generic/D2LTestCase.java
index 60af08dc..0291a7e9 100644
--- a/src/test/java/org/apache/bcel/generic/D2LTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/D2LTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class D2LTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final D2L d2l = new D2L();
         d2l.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/DADDTestCase.java b/src/test/java/org/apache/bcel/generic/DADDTestCase.java
index d2d6ba2d..c236f356 100644
--- a/src/test/java/org/apache/bcel/generic/DADDTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/DADDTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class DADDTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final DADD dadd = new DADD();
         dadd.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/DDIVTestCase.java b/src/test/java/org/apache/bcel/generic/DDIVTestCase.java
index 3f9d4934..2a457d19 100644
--- a/src/test/java/org/apache/bcel/generic/DDIVTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/DDIVTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class DDIVTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final DDIV ddiv = new DDIV();
         ddiv.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/DMULTestCase.java b/src/test/java/org/apache/bcel/generic/DMULTestCase.java
index 7457ce3f..cd9f5f9b 100644
--- a/src/test/java/org/apache/bcel/generic/DMULTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/DMULTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class DMULTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final DMUL dmul = new DMUL();
         dmul.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/DNEGTestCase.java b/src/test/java/org/apache/bcel/generic/DNEGTestCase.java
index 6bc5c043..2d30b109 100644
--- a/src/test/java/org/apache/bcel/generic/DNEGTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/DNEGTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class DNEGTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final DNEG dneg = new DNEG();
         dneg.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/DREMTestCase.java b/src/test/java/org/apache/bcel/generic/DREMTestCase.java
index 170d2508..a2c0c1bf 100644
--- a/src/test/java/org/apache/bcel/generic/DREMTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/DREMTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class DREMTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final DREM drem = new DREM();
         drem.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/DSUBTestCase.java b/src/test/java/org/apache/bcel/generic/DSUBTestCase.java
index 1cbb6991..9ee047aa 100644
--- a/src/test/java/org/apache/bcel/generic/DSUBTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/DSUBTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class DSUBTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final DSUB dsub = new DSUB();
         dsub.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/F2DTestCase.java b/src/test/java/org/apache/bcel/generic/F2DTestCase.java
index 736f490b..59dac71d 100644
--- a/src/test/java/org/apache/bcel/generic/F2DTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/F2DTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class F2DTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final F2D f2d = new F2D();
         f2d.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/F2ITestCase.java b/src/test/java/org/apache/bcel/generic/F2ITestCase.java
index e3e6ca40..b7936f98 100644
--- a/src/test/java/org/apache/bcel/generic/F2ITestCase.java
+++ b/src/test/java/org/apache/bcel/generic/F2ITestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class F2ITestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final F2I f2i = new F2I();
         f2i.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/F2LTestCase.java b/src/test/java/org/apache/bcel/generic/F2LTestCase.java
index 56d73b60..bc906e3c 100644
--- a/src/test/java/org/apache/bcel/generic/F2LTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/F2LTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class F2LTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final F2L f2l = new F2L();
         f2l.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/FADDTestCase.java b/src/test/java/org/apache/bcel/generic/FADDTestCase.java
index 0ebea9c3..dbbf6e54 100644
--- a/src/test/java/org/apache/bcel/generic/FADDTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/FADDTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class FADDTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final FADD fadd = new FADD();
         fadd.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/FDIVTestCase.java b/src/test/java/org/apache/bcel/generic/FDIVTestCase.java
index b1264688..f283c3db 100644
--- a/src/test/java/org/apache/bcel/generic/FDIVTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/FDIVTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class FDIVTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final FDIV fdiv = new FDIV();
         fdiv.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/FMULTestCase.java b/src/test/java/org/apache/bcel/generic/FMULTestCase.java
index 0a96522f..0bda016b 100644
--- a/src/test/java/org/apache/bcel/generic/FMULTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/FMULTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class FMULTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final FMUL fmul = new FMUL();
         fmul.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/FNEGTestCase.java b/src/test/java/org/apache/bcel/generic/FNEGTestCase.java
index d2198c1f..36675408 100644
--- a/src/test/java/org/apache/bcel/generic/FNEGTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/FNEGTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class FNEGTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final FNEG fneg = new FNEG();
         fneg.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/FREMTestCase.java b/src/test/java/org/apache/bcel/generic/FREMTestCase.java
index 4724a687..f6c47b43 100644
--- a/src/test/java/org/apache/bcel/generic/FREMTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/FREMTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class FREMTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final FREM frem = new FREM();
         frem.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/FSUBTestCase.java b/src/test/java/org/apache/bcel/generic/FSUBTestCase.java
index e7cc5be1..b9b949d9 100644
--- a/src/test/java/org/apache/bcel/generic/FSUBTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/FSUBTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class FSUBTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final FSUB fsub = new FSUB();
         fsub.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/GETFIELDTestCase.java b/src/test/java/org/apache/bcel/generic/GETFIELDTestCase.java
index e4f75865..36f52b4f 100644
--- a/src/test/java/org/apache/bcel/generic/GETFIELDTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/GETFIELDTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class GETFIELDTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final GETFIELD getfield = new GETFIELD(0);
         getfield.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setExceptionThrower(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/I2BTestCase.java b/src/test/java/org/apache/bcel/generic/I2BTestCase.java
index 1e878382..ba71fb23 100644
--- a/src/test/java/org/apache/bcel/generic/I2BTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/I2BTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class I2BTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final I2B i2b = new I2B();
         i2b.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/I2CTestCase.java b/src/test/java/org/apache/bcel/generic/I2CTestCase.java
index 281a21a0..ea783ff7 100644
--- a/src/test/java/org/apache/bcel/generic/I2CTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/I2CTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class I2CTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final I2C i2c = new I2C();
         i2c.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/I2DTestCase.java b/src/test/java/org/apache/bcel/generic/I2DTestCase.java
index 9692fc45..23902c56 100644
--- a/src/test/java/org/apache/bcel/generic/I2DTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/I2DTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class I2DTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final I2D i2d = new I2D();
         i2d.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/I2FTestCase.java b/src/test/java/org/apache/bcel/generic/I2FTestCase.java
index d4cd9f0a..76587f8e 100644
--- a/src/test/java/org/apache/bcel/generic/I2FTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/I2FTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class I2FTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final I2F i2f = new I2F();
         i2f.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/I2LTestCase.java b/src/test/java/org/apache/bcel/generic/I2LTestCase.java
index b2c6bacd..08994b7f 100644
--- a/src/test/java/org/apache/bcel/generic/I2LTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/I2LTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class I2LTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final I2L i2l = new I2L();
         i2l.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/I2STestCase.java b/src/test/java/org/apache/bcel/generic/I2STestCase.java
index f55cd10f..b664cb05 100644
--- a/src/test/java/org/apache/bcel/generic/I2STestCase.java
+++ b/src/test/java/org/apache/bcel/generic/I2STestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class I2STestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final I2S i2s = new I2S();
         i2s.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/IADDTestCase.java b/src/test/java/org/apache/bcel/generic/IADDTestCase.java
index 7c65f8d6..5df6be59 100644
--- a/src/test/java/org/apache/bcel/generic/IADDTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/IADDTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class IADDTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final IADD iadd = new IADD();
         iadd.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/IANDTestCase.java b/src/test/java/org/apache/bcel/generic/IANDTestCase.java
index 61839299..0498f460 100644
--- a/src/test/java/org/apache/bcel/generic/IANDTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/IANDTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class IANDTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final IAND iand = new IAND();
         iand.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/IDIVTestCase.java b/src/test/java/org/apache/bcel/generic/IDIVTestCase.java
index 4592815c..3ce5ffb4 100644
--- a/src/test/java/org/apache/bcel/generic/IDIVTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/IDIVTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class IDIVTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final IDIV idiv = new IDIV();
         idiv.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setExceptionThrower(1);
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
diff --git a/src/test/java/org/apache/bcel/generic/IMPDEP1TestCase.java b/src/test/java/org/apache/bcel/generic/IMPDEP1TestCase.java
index 27263979..0e383f75 100644
--- a/src/test/java/org/apache/bcel/generic/IMPDEP1TestCase.java
+++ b/src/test/java/org/apache/bcel/generic/IMPDEP1TestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class IMPDEP1TestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final IMPDEP1 impdep1 = new IMPDEP1();
         impdep1.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setImpdep1(1);
         assertEquals(expected, countVisitor);
     }
diff --git a/src/test/java/org/apache/bcel/generic/IMPDEP2TestCase.java b/src/test/java/org/apache/bcel/generic/IMPDEP2TestCase.java
index c28c843b..5ba7d52e 100644
--- a/src/test/java/org/apache/bcel/generic/IMPDEP2TestCase.java
+++ b/src/test/java/org/apache/bcel/generic/IMPDEP2TestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class IMPDEP2TestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final IMPDEP2 impdep2 = new IMPDEP2();
         impdep2.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setImpdep2(1);
         assertEquals(expected, countVisitor);
     }
diff --git a/src/test/java/org/apache/bcel/generic/IMULTestCase.java b/src/test/java/org/apache/bcel/generic/IMULTestCase.java
index b28ae6d4..ca9eb07c 100644
--- a/src/test/java/org/apache/bcel/generic/IMULTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/IMULTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class IMULTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final IMUL imul = new IMUL();
         imul.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/INEGTestCase.java b/src/test/java/org/apache/bcel/generic/INEGTestCase.java
index 0076e14e..82f7b58e 100644
--- a/src/test/java/org/apache/bcel/generic/INEGTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/INEGTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class INEGTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final INEG ineg = new INEG();
         ineg.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/IORTestCase.java b/src/test/java/org/apache/bcel/generic/IORTestCase.java
index ce8d05b7..0c8b67ee 100644
--- a/src/test/java/org/apache/bcel/generic/IORTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/IORTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class IORTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final IOR ior = new IOR();
         ior.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/IREMTestCase.java b/src/test/java/org/apache/bcel/generic/IREMTestCase.java
index c2f581bc..ae7457da 100644
--- a/src/test/java/org/apache/bcel/generic/IREMTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/IREMTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class IREMTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final IREM irem = new IREM();
         irem.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setExceptionThrower(1);
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
diff --git a/src/test/java/org/apache/bcel/generic/ISHLTestCase.java b/src/test/java/org/apache/bcel/generic/ISHLTestCase.java
index 5770714e..b4f5508a 100644
--- a/src/test/java/org/apache/bcel/generic/ISHLTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/ISHLTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class ISHLTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final ISHL ishl = new ISHL();
         ishl.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/ISHRTestCase.java b/src/test/java/org/apache/bcel/generic/ISHRTestCase.java
index 26ad0ffc..1284a999 100644
--- a/src/test/java/org/apache/bcel/generic/ISHRTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/ISHRTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class ISHRTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final ISHR ishr = new ISHR();
         ishr.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/ISUBTestCase.java b/src/test/java/org/apache/bcel/generic/ISUBTestCase.java
index 6a61de3b..91f5b417 100644
--- a/src/test/java/org/apache/bcel/generic/ISUBTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/ISUBTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class ISUBTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final ISUB isub = new ISUB();
         isub.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/IXORTestCase.java b/src/test/java/org/apache/bcel/generic/IXORTestCase.java
index 4b2b19a9..5f21cf1e 100644
--- a/src/test/java/org/apache/bcel/generic/IXORTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/IXORTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class IXORTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final IXOR ixor = new IXOR();
         ixor.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/L2DTestCase.java b/src/test/java/org/apache/bcel/generic/L2DTestCase.java
index 9b436ed4..a7a823ba 100644
--- a/src/test/java/org/apache/bcel/generic/L2DTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/L2DTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class L2DTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final L2D l2d = new L2D();
         l2d.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/L2FTestCase.java b/src/test/java/org/apache/bcel/generic/L2FTestCase.java
index 7749ec43..90a4f4a2 100644
--- a/src/test/java/org/apache/bcel/generic/L2FTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/L2FTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class L2FTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final L2F l2f = new L2F();
         l2f.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/L2ITestCase.java b/src/test/java/org/apache/bcel/generic/L2ITestCase.java
index a2ca1d82..9d9ef7cd 100644
--- a/src/test/java/org/apache/bcel/generic/L2ITestCase.java
+++ b/src/test/java/org/apache/bcel/generic/L2ITestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class L2ITestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final L2I l2i = new L2I();
         l2i.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/LADDTestCase.java b/src/test/java/org/apache/bcel/generic/LADDTestCase.java
index 8bc90588..af1628cb 100644
--- a/src/test/java/org/apache/bcel/generic/LADDTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/LADDTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class LADDTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final LADD ladd = new LADD();
         ladd.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/LANDTestCase.java b/src/test/java/org/apache/bcel/generic/LANDTestCase.java
index 10b01fce..3e7458b7 100644
--- a/src/test/java/org/apache/bcel/generic/LANDTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/LANDTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class LANDTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final LAND land = new LAND();
         land.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/LCMPTestCase.java b/src/test/java/org/apache/bcel/generic/LCMPTestCase.java
index dcaf00dd..7c4597a3 100644
--- a/src/test/java/org/apache/bcel/generic/LCMPTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/LCMPTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class LCMPTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final LCMP lcmp = new LCMP();
         lcmp.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/LDIVTestCase.java b/src/test/java/org/apache/bcel/generic/LDIVTestCase.java
index 716d959c..928cd89d 100644
--- a/src/test/java/org/apache/bcel/generic/LDIVTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/LDIVTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class LDIVTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final LDIV ldiv = new LDIV();
         ldiv.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setExceptionThrower(1);
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
diff --git a/src/test/java/org/apache/bcel/generic/LMULTestCase.java b/src/test/java/org/apache/bcel/generic/LMULTestCase.java
index f2ac83f1..174552d1 100644
--- a/src/test/java/org/apache/bcel/generic/LMULTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/LMULTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class LMULTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final LMUL lmul = new LMUL();
         lmul.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/LNEGTestCase.java b/src/test/java/org/apache/bcel/generic/LNEGTestCase.java
index b11373dd..a2e7c02f 100644
--- a/src/test/java/org/apache/bcel/generic/LNEGTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/LNEGTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class LNEGTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final LNEG lneg = new LNEG();
         lneg.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/LORTestCase.java b/src/test/java/org/apache/bcel/generic/LORTestCase.java
index a6680cb3..816f01f1 100644
--- a/src/test/java/org/apache/bcel/generic/LORTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/LORTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class LORTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final LOR lor = new LOR();
         lor.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/LREMTestCase.java b/src/test/java/org/apache/bcel/generic/LREMTestCase.java
index bfe3b1e2..63290358 100644
--- a/src/test/java/org/apache/bcel/generic/LREMTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/LREMTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class LREMTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final LREM lrem = new LREM();
         lrem.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setExceptionThrower(1);
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
diff --git a/src/test/java/org/apache/bcel/generic/LSHLTestCase.java b/src/test/java/org/apache/bcel/generic/LSHLTestCase.java
index 650a476e..e7b24d05 100644
--- a/src/test/java/org/apache/bcel/generic/LSHLTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/LSHLTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class LSHLTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final LSHL lshl = new LSHL();
         lshl.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/LSHRTestCase.java b/src/test/java/org/apache/bcel/generic/LSHRTestCase.java
index b4471b47..9f45e939 100644
--- a/src/test/java/org/apache/bcel/generic/LSHRTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/LSHRTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class LSHRTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final LSHR lshr = new LSHR();
         lshr.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/LSUBTestCase.java b/src/test/java/org/apache/bcel/generic/LSUBTestCase.java
index 46e09669..ec5e430e 100644
--- a/src/test/java/org/apache/bcel/generic/LSUBTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/LSUBTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class LSUBTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final LSUB lsub = new LSUB();
         lsub.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/LXORTestCase.java b/src/test/java/org/apache/bcel/generic/LXORTestCase.java
index d7b96d30..05d49daa 100644
--- a/src/test/java/org/apache/bcel/generic/LXORTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/LXORTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class LXORTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final LXOR lxor = new LXOR();
         lxor.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setTypedInstruction(1);
         expected.setStackProducer(1);
         expected.setStackConsumer(1);
diff --git a/src/test/java/org/apache/bcel/generic/PUTFIELDTestCase.java b/src/test/java/org/apache/bcel/generic/PUTFIELDTestCase.java
index 4b474c91..096486c5 100644
--- a/src/test/java/org/apache/bcel/generic/PUTFIELDTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/PUTFIELDTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class PUTFIELDTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final PUTFIELD putfield = new PUTFIELD(0);
         putfield.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setExceptionThrower(1);
         expected.setStackConsumer(1);
         expected.setPopInstruction(1);
diff --git a/src/test/java/org/apache/bcel/generic/PUTSTATICTestCase.java b/src/test/java/org/apache/bcel/generic/PUTSTATICTestCase.java
index 2b6ccc37..07dc1f03 100644
--- a/src/test/java/org/apache/bcel/generic/PUTSTATICTestCase.java
+++ b/src/test/java/org/apache/bcel/generic/PUTSTATICTestCase.java
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class PUTSTATICTestCase {
     @Test
     public void accept() {
-        final CountVisitor countVisitor = new CountVisitor();
+        final CountingVisitor countVisitor = new CountingVisitor();
         final PUTSTATIC putstatic = new PUTSTATIC(0);
         putstatic.accept(countVisitor);
-        final CountVisitor expected = new CountVisitor();
+        final CountingVisitor expected = new CountingVisitor();
         expected.setExceptionThrower(1);
         expected.setStackConsumer(1);
         expected.setPopInstruction(1);
diff --git a/src/test/java/org/apache/bcel/visitors/CounterVisitor.java b/src/test/java/org/apache/bcel/visitors/CountingVisitor.java
similarity index 99%
rename from src/test/java/org/apache/bcel/visitors/CounterVisitor.java
rename to src/test/java/org/apache/bcel/visitors/CountingVisitor.java
index 90616f49..8a350385 100644
--- a/src/test/java/org/apache/bcel/visitors/CounterVisitor.java
+++ b/src/test/java/org/apache/bcel/visitors/CountingVisitor.java
@@ -76,7 +76,7 @@ import org.apache.bcel.classfile.Synthetic;
 import org.apache.bcel.classfile.Unknown;
 import org.apache.bcel.classfile.Visitor;
 
-public class CounterVisitor implements Visitor {
+public class CountingVisitor implements Visitor {
     // CHECKSTYLE:OFF (public mutable fields in test code)
     public int unknownCount;