From 5cd030ea7ac483fc2977318d770f78fe9974f341 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Mon, 19 Jan 2026 06:54:46 -0500
Subject: [PATCH 01/83] Add a sanity check in JavaClassTest
Extract some constants
---
.../apache/bcel/classfile/JavaClassTest.java | 68 ++++++++++++++-----
1 file changed, 50 insertions(+), 18 deletions(-)
diff --git a/src/test/java/org/apache/bcel/classfile/JavaClassTest.java b/src/test/java/org/apache/bcel/classfile/JavaClassTest.java
index b1faaa2275..ff76cba598 100644
--- a/src/test/java/org/apache/bcel/classfile/JavaClassTest.java
+++ b/src/test/java/org/apache/bcel/classfile/JavaClassTest.java
@@ -26,7 +26,9 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.Paths;
import org.apache.bcel.Const;
import org.apache.bcel.Repository;
@@ -37,6 +39,7 @@
import org.apache.bcel.generic.Type;
import org.apache.bcel.util.ClassPath;
import org.apache.bcel.util.SyntheticRepository;
+import org.apache.commons.lang3.SystemProperties;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
@@ -48,8 +51,11 @@
*/
class JavaClassTest {
- private static final String CLASS_NAME = "TargetClass";
+ private static final String INTERFACE_NAME_A = "InterfaceA";
+
+ private static final String INTERFACE_NAME_B = "InterfaceB";
+ private static final String CLASS_NAME = "TargetClass";
// Doesn't compile due to cyclic inheritance
// private interface InterfaceA extends InterfaceB {
// }
@@ -60,14 +66,20 @@ class JavaClassTest {
@TempDir
static Path tempDir;
+ static Path tempClassFile;
+
+ static Path tempIntefaceAFile;
+
+ static Path tempIntefaceBFile;
+
@BeforeAll
static void beforeAll() throws Exception {
// Create InterfaceA that extends InterfaceB (will create cycle)
- writeInterfaceA();
+ tempIntefaceAFile = writeInterfaceA();
// Create InterfaceB that extends InterfaceA (completes the cycle)
- writeInterfaceB();
+ tempIntefaceBFile = writeInterfaceB();
// Create a class that implements InterfaceA
- writeTargetClass();
+ tempClassFile = writeTargetClass();
// Cycle: InterfaceA -> InterfaceB -> InterfaceA -> ...
}
@@ -90,23 +102,27 @@ static byte[] toByteArray(final ClassGen cg) throws IOException {
return baos.toByteArray();
}
- private static void writeInterfaceA() throws Exception {
+ private static Path writeInterfaceA() throws Exception {
// Create InterfaceA that extends InterfaceB
- final ClassGen cg = new ClassGen("InterfaceA", "java.lang.Object", "InterfaceA.java", Const.ACC_PUBLIC | Const.ACC_INTERFACE | Const.ACC_ABSTRACT,
- new String[] { "InterfaceB" });
- cg.getJavaClass().dump(tempDir.resolve("InterfaceA.class").toString());
+ final ClassGen classGen = new ClassGen(INTERFACE_NAME_A, "java.lang.Object", INTERFACE_NAME_A + ".java",
+ Const.ACC_PUBLIC | Const.ACC_INTERFACE | Const.ACC_ABSTRACT, new String[] { INTERFACE_NAME_B });
+ final Path path = tempDir.resolve(INTERFACE_NAME_A + ".class");
+ classGen.getJavaClass().dump(path.toString());
+ return path;
}
- private static void writeInterfaceB() throws Exception {
+ private static Path writeInterfaceB() throws Exception {
// Create InterfaceB that extends InterfaceA
- final ClassGen cg = new ClassGen("InterfaceB", "java.lang.Object", "InterfaceB.java", Const.ACC_PUBLIC | Const.ACC_INTERFACE | Const.ACC_ABSTRACT,
- new String[] { "InterfaceA" });
- cg.getJavaClass().dump(tempDir.resolve("InterfaceB.class").toString());
+ final ClassGen classGen = new ClassGen(INTERFACE_NAME_B, "java.lang.Object", INTERFACE_NAME_B + ".java",
+ Const.ACC_PUBLIC | Const.ACC_INTERFACE | Const.ACC_ABSTRACT, new String[] { INTERFACE_NAME_A });
+ final Path path = tempDir.resolve(INTERFACE_NAME_B + ".class");
+ classGen.getJavaClass().dump(path.toString());
+ return path;
}
- private static void writeTargetClass() throws Exception {
+ private static Path writeTargetClass() throws Exception {
// Create a class that implements InterfaceA
- final ClassGen cg = new ClassGen(CLASS_NAME, "java.lang.Object", "VulnerableClass.java", Const.ACC_PUBLIC, new String[] { "InterfaceA" });
+ final ClassGen cg = new ClassGen(CLASS_NAME, "java.lang.Object", CLASS_NAME + ".java", Const.ACC_PUBLIC, new String[] { INTERFACE_NAME_A });
// Add default constructor
final InstructionList il = new InstructionList();
final MethodGen constructor = new MethodGen(Const.ACC_PUBLIC, Type.VOID, Type.NO_ARGS, new String[] {}, "", CLASS_NAME, il, cg.getConstantPool());
@@ -119,7 +135,9 @@ private static void writeTargetClass() throws Exception {
cg.addMethod(constructor.getMethod());
il.dispose();
// Create the class file
- cg.getJavaClass().dump(tempDir.resolve(CLASS_NAME + ".class").toString());
+ final Path path = tempDir.resolve(CLASS_NAME + ".class");
+ cg.getJavaClass().dump(path.toString());
+ return path;
}
private Field findFieldDoesNotExist(final Class> clazz) throws ClassNotFoundException {
@@ -149,11 +167,26 @@ void testFindFieldCustomClass() throws Exception {
}
@Test
- void testFindFieldCustomInterface1() throws ClassNotFoundException {
+ void testFindFieldCustomInterface1() throws IOException, ClassNotFoundException {
// Set up repository to load classes from the malicious_classes directory
- final String classPath = tempDir.toString() + System.getProperty("path.separator") + System.getProperty("java.class.path");
+ final String classPath = tempDir.toString() + SystemProperties.getPathSeparator() + SystemProperties.getJavaClassPath();
Repository.setRepository(SyntheticRepository.getInstance(new ClassPath(classPath)));
assertThrows(ClassFormatException.class, () -> Repository.lookupClass(CLASS_NAME).findField("nonExistentField", Type.INT));
+ // sanity check
+ final Path targetDir = Paths.get("target/test-classes");
+ final Path targetClassFile = targetDir.resolve(CLASS_NAME + ".class");
+ final Path targetInterfaceA = targetDir.resolve(INTERFACE_NAME_A + ".class");
+ final Path targetInterfaceB = targetDir.resolve(INTERFACE_NAME_B + ".class");
+ try {
+ Files.copy(tempClassFile, targetClassFile);
+ Files.copy(tempIntefaceAFile, targetInterfaceA);
+ Files.copy(tempIntefaceBFile, targetInterfaceB);
+ assertThrows(ClassCircularityError.class, () -> Class.forName(CLASS_NAME));
+ } finally {
+ Files.delete(targetClassFile);
+ Files.delete(targetInterfaceA);
+ Files.delete(targetInterfaceB);
+ }
}
@Test
@@ -195,5 +228,4 @@ void testGetAllInterfaces(final Class> clazz) throws ClassNotFoundException {
void testGetSuperClassesAll(final Class> clazz) throws ClassNotFoundException {
assertNotNull(Repository.lookupClass(clazz.getName()).getSuperClasses());
}
-
}
From 88556adb3c19b7c9323cd5c0c72084d0d14eb93f Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Thu, 22 Jan 2026 13:49:25 +0000
Subject: [PATCH 02/83] Updates for the next release
---
src/changes/changes.xml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index e604e9e8ed..3efe0b3f21 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -59,6 +59,11 @@ The type attribute can be add,update,fix,remove.
Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.
-->
+
+
+
+
+
Fix infinite loop in example.TransitiveHull #476.
From 9c1cf9005ba7d3b215644ffe93b6a58dcb65c981 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Thu, 22 Jan 2026 13:58:55 +0000
Subject: [PATCH 03/83] Updates for the next release
---
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index b94e4ee02e..d7c3c3f289 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,11 +44,11 @@
1.8
bcel
org.apache.bcel
- 6.12.0
+ 6.12.1
6.12.1
true
RC1
- 6.11.0
+ 6.12.0
(Java 8 or above)
https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-bcel
scm:svn:https://dist.apache.org/repos/dist/dev/commons/${commons.componentid}
From b881c8a9800095136f3c7ef7c892945458f61e16 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Thu, 22 Jan 2026 15:39:08 +0000
Subject: [PATCH 04/83] Bump actions/setup-java from 5.1.0 to 5.2.0
---
.github/workflows/maven.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 5ee0820979..c621602a10 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -48,7 +48,7 @@ jobs:
restore-keys: |
${{ runner.os }}-maven-
- name: Set up JDK ${{ matrix.java }}
- uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5.1.0
+ uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: ${{ runner.os == 'macOS' && matrix.java == '8' && 'zulu' || 'temurin' }}
java-version: ${{ matrix.java }}
From 89b2aefc106e8dfb1710e438880b4dc61d04be3f Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Thu, 22 Jan 2026 18:17:20 -0500
Subject: [PATCH 05/83] Bump org.apache.commons:commons-parent from 95 to 96.
---
pom.xml | 2 +-
src/changes/changes.xml | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index d7c3c3f289..dcf48b9343 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
org.apache.commons
commons-parent
- 95
+ 96
org.apache.bcel
bcel
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 3efe0b3f21..f136652dbe 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -63,6 +63,7 @@ The type attribute can be add,update,fix,remove.
+ Bump org.apache.commons:commons-parent from 95 to 96.
From bab23f7396250dd861215810260c4f8a35543200 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Fri, 23 Jan 2026 07:43:50 -0500
Subject: [PATCH 06/83] Bump actions/checkout from 6.0.1 to 6.0.2
---
.github/workflows/codeql-analysis.yml | 2 +-
.github/workflows/dependency-review.yml | 2 +-
.github/workflows/maven.yml | 2 +-
.github/workflows/scorecards-analysis.yml | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index c4c4c67879..cc69f53340 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -45,7 +45,7 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml
index 1df8666044..a04da50909 100644
--- a/.github/workflows/dependency-review.yml
+++ b/.github/workflows/dependency-review.yml
@@ -26,6 +26,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: 'Dependency Review PR'
uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index c621602a10..b34da06f30 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -38,7 +38,7 @@ jobs:
steps:
- name: Prepare git
run: git config --global core.autocrlf false
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml
index 4b88ad5153..36f8ff733f 100644
--- a/.github/workflows/scorecards-analysis.yml
+++ b/.github/workflows/scorecards-analysis.yml
@@ -40,7 +40,7 @@ jobs:
steps:
- name: "Checkout code"
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
From b9ebad1310df011b33cdd4f1a03bcacd78c8d26d Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 24 Jan 2026 06:38:28 -0500
Subject: [PATCH 07/83] Bump for next release
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index dcf48b9343..a402106350 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,7 +45,7 @@
bcel
org.apache.bcel
6.12.1
- 6.12.1
+ 6.12.2
true
RC1
6.12.0
From 563e7bc27f83859d7b681aba410361cc0e0df862 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Mon, 26 Jan 2026 09:36:45 -0500
Subject: [PATCH 08/83] Bump github/codeql-action from 4.31.10 to 4.31.11
---
.github/workflows/codeql-analysis.yml | 6 +++---
.github/workflows/scorecards-analysis.yml | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index cc69f53340..17321f5dd1 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -57,7 +57,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
+ uses: github/codeql-action/init@19b2f06db2b6f5108140aeb04014ef02b648f789 # v4.31.11
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -68,7 +68,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
+ uses: github/codeql-action/autobuild@19b2f06db2b6f5108140aeb04014ef02b648f789 # v4.31.11
# âšī¸ Command-line programs to run using the OS shell.
# đ https://git.io/JvXDl
@@ -82,4 +82,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
+ uses: github/codeql-action/analyze@19b2f06db2b6f5108140aeb04014ef02b648f789 # v4.31.11
diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml
index 36f8ff733f..5eba7ee299 100644
--- a/.github/workflows/scorecards-analysis.yml
+++ b/.github/workflows/scorecards-analysis.yml
@@ -64,6 +64,6 @@ jobs:
retention-days: 5
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
+ uses: github/codeql-action/upload-sarif@19b2f06db2b6f5108140aeb04014ef02b648f789 # v4.31.11
with:
sarif_file: results.sarif
From 055b5863c03dec9d1f75a2035bf348a5825c583f Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Mon, 26 Jan 2026 15:52:19 -0500
Subject: [PATCH 09/83] Add license file headers
---
src/examples/Mini/README | 19 +++++++++++++++++++
src/test/resources/Java4Example.java | 19 +++++++++++++++++++
src/test/resources/Java8Example.java | 19 +++++++++++++++++++
src/test/resources/Java8Example2.java | 19 +++++++++++++++++++
src/test/resources/StackMapExample.java | 19 +++++++++++++++++++
src/test/resources/StackMapExample2.java | 19 +++++++++++++++++++
src/test/resources/record/SimpleRecord.java | 19 +++++++++++++++++++
7 files changed, 133 insertions(+)
diff --git a/src/examples/Mini/README b/src/examples/Mini/README
index db1320d1f5..69f6b3ec44 100644
--- a/src/examples/Mini/README
+++ b/src/examples/Mini/README
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
Mini-Mini tutorial
------------------
diff --git a/src/test/resources/Java4Example.java b/src/test/resources/Java4Example.java
index 3173b26c85..27f612dc08 100644
--- a/src/test/resources/Java4Example.java
+++ b/src/test/resources/Java4Example.java
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
diff --git a/src/test/resources/Java8Example.java b/src/test/resources/Java8Example.java
index 07ba6dfbd9..48fde8a775 100644
--- a/src/test/resources/Java8Example.java
+++ b/src/test/resources/Java8Example.java
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
import java.util.*;
import java.util.stream.*;
diff --git a/src/test/resources/Java8Example2.java b/src/test/resources/Java8Example2.java
index eacdd8b09b..3c4a453d99 100644
--- a/src/test/resources/Java8Example2.java
+++ b/src/test/resources/Java8Example2.java
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
import java.io.Serializable;
import java.util.*;
import java.util.stream.*;
diff --git a/src/test/resources/StackMapExample.java b/src/test/resources/StackMapExample.java
index f4fc316825..12e9c0dec1 100644
--- a/src/test/resources/StackMapExample.java
+++ b/src/test/resources/StackMapExample.java
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
/*
* Example to check if BCELifier generates the stack map table
* so that the generated class passes the Java verifier checks.
diff --git a/src/test/resources/StackMapExample2.java b/src/test/resources/StackMapExample2.java
index 24598d3cee..8e6f70e95a 100644
--- a/src/test/resources/StackMapExample2.java
+++ b/src/test/resources/StackMapExample2.java
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
/*
* Another version of StackMapExample using 2 types of locals String and int
* instead of just String.
diff --git a/src/test/resources/record/SimpleRecord.java b/src/test/resources/record/SimpleRecord.java
index 10316b07f8..c6f56c6790 100644
--- a/src/test/resources/record/SimpleRecord.java
+++ b/src/test/resources/record/SimpleRecord.java
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
import javax.annotation.Nonnull;
public record SimpleRecord(int aNumber,@Nonnull String aString) {
From 3473c6d625194acd5e0e960403506c8637b10b48 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Wed, 28 Jan 2026 08:25:12 -0500
Subject: [PATCH 10/83] Update test to match InterruptedException guidelines
---
src/test/java/org/apache/bcel/verifier/VerifyBadClassesTest.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/test/java/org/apache/bcel/verifier/VerifyBadClassesTest.java b/src/test/java/org/apache/bcel/verifier/VerifyBadClassesTest.java
index 6d955d89aa..61d38dab4a 100644
--- a/src/test/java/org/apache/bcel/verifier/VerifyBadClassesTest.java
+++ b/src/test/java/org/apache/bcel/verifier/VerifyBadClassesTest.java
@@ -96,6 +96,7 @@ private String run(final List command) throws ExecuteException, IOExcept
exitValue = resultHandler.getExitValue();
} catch (final InterruptedException e) {
// Ignore exception, but watchdog.killedProcess() records that the process timed out.
+ Thread.currentThread().interrupt();
}
final boolean timedOut = executor.isFailure(exitValue) && watchdog.killedProcess();
if (timedOut) {
From b59383700441a464230d16b37d31c45d490dce0c Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Wed, 28 Jan 2026 15:44:51 -0500
Subject: [PATCH 11/83] Bump github/codeql-action from 4.31.11 to 4.32.0
---
.github/workflows/codeql-analysis.yml | 6 +++---
.github/workflows/scorecards-analysis.yml | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 17321f5dd1..658b44aef9 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -57,7 +57,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@19b2f06db2b6f5108140aeb04014ef02b648f789 # v4.31.11
+ uses: github/codeql-action/init@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -68,7 +68,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@19b2f06db2b6f5108140aeb04014ef02b648f789 # v4.31.11
+ uses: github/codeql-action/autobuild@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
# âšī¸ Command-line programs to run using the OS shell.
# đ https://git.io/JvXDl
@@ -82,4 +82,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@19b2f06db2b6f5108140aeb04014ef02b648f789 # v4.31.11
+ uses: github/codeql-action/analyze@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml
index 5eba7ee299..98e267bc0d 100644
--- a/.github/workflows/scorecards-analysis.yml
+++ b/.github/workflows/scorecards-analysis.yml
@@ -64,6 +64,6 @@ jobs:
retention-days: 5
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@19b2f06db2b6f5108140aeb04014ef02b648f789 # v4.31.11
+ uses: github/codeql-action/upload-sarif@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
with:
sarif_file: results.sarif
From bfead0ab010b626ac0b92cfbf3dad26d631464cf Mon Sep 17 00:00:00 2001
From: nbauma109
Date: Sun, 1 Feb 2026 16:42:40 +0100
Subject: [PATCH 12/83] Fix constant pool module access test (#492)
* Update test ConstantPoolModuleAccessTest for Java 26-ea
* fix sun.util.resources.LocaleData$LocaleDataResourceBundleProvider
---------
Co-authored-by: nbauma109
---
.../classfile/ConstantPoolModuleAccessTest.java | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/src/test/java/org/apache/bcel/classfile/ConstantPoolModuleAccessTest.java b/src/test/java/org/apache/bcel/classfile/ConstantPoolModuleAccessTest.java
index 2c9b1cce51..f4a17aadda 100644
--- a/src/test/java/org/apache/bcel/classfile/ConstantPoolModuleAccessTest.java
+++ b/src/test/java/org/apache/bcel/classfile/ConstantPoolModuleAccessTest.java
@@ -179,8 +179,12 @@ public void visitModule(final Module obj) {
expected.add("jdk.internal.logger.DefaultLoggerFinder");
expected.add("sun.text.spi.JavaTimeDateTimePatternProvider");
expected.add("sun.util.locale.provider.LocaleDataMetaInfo");
- expected.add("sun.util.resources.LocaleData$CommonResourceBundleProvider");
- expected.add("sun.util.resources.LocaleData$SupplementaryResourceBundleProvider");
+ if (javaClass.getMajor() <= Const.MAJOR_25) {
+ expected.add("sun.util.resources.LocaleData$CommonResourceBundleProvider");
+ expected.add("sun.util.resources.LocaleData$SupplementaryResourceBundleProvider");
+ } else {
+ expected.add("sun.util.resources.LocaleData$LocaleDataResourceBundleProvider");
+ }
expected.add("sun.util.spi.CalendarProvider");
assertEquals(expected, Arrays.asList(usedClassNames));
} else if (urlPath.contains("/jdk.management.agent/module-info.class") && javaClass.getMajor() < Const.MAJOR_21) {
@@ -261,8 +265,12 @@ public void visitModule(final Module obj) {
assertEquals(expected, Arrays.asList(usedClassNames));
} else if (urlPath.contains("/jdk.jpackage/module-info.class")) {
final List expected = new ArrayList<>();
- expected.add("jdk.jpackage.internal.Bundler");
- expected.add("jdk.jpackage.internal.Bundlers");
+ if (javaClass.getMajor() <= Const.MAJOR_25) {
+ expected.add("jdk.jpackage.internal.Bundler");
+ expected.add("jdk.jpackage.internal.Bundlers");
+ } else {
+ expected.add("jdk.jpackage.internal.cli.CliBundlingEnvironment");
+ }
assertEquals(expected, Arrays.asList(usedClassNames));
} else if (urlPath.contains("/jdk.naming.ldap/module-info.class")) {
final List expected = new ArrayList<>();
From b7993f9214b2882c77ad4140bb8c48badb0ed8a9 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sun, 1 Feb 2026 10:43:43 -0500
Subject: [PATCH 13/83] ix constant pool module access test on Java 26 and
above #492.
---
src/changes/changes.xml | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index f136652dbe..30e4256623 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -61,6 +61,7 @@ The type attribute can be add,update,fix,remove.
+ Fix constant pool module access test on Java 26 and above #492.
Bump org.apache.commons:commons-parent from 95 to 96.
From 066181c7beaf04d2b95f8cc8977370992c66f297 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sun, 1 Feb 2026 15:54:22 -0500
Subject: [PATCH 14/83] Sort members
---
.../java/org/apache/bcel/ExceptionConst.java | 20 ++++-----
src/main/java/org/apache/bcel/util/Args.java | 26 ++++++------
.../bcel/classfile/JavaClassCyclicTest.java | 42 +++++++++----------
3 files changed, 44 insertions(+), 44 deletions(-)
diff --git a/src/main/java/org/apache/bcel/ExceptionConst.java b/src/main/java/org/apache/bcel/ExceptionConst.java
index b9b6232fe6..7451286ca2 100644
--- a/src/main/java/org/apache/bcel/ExceptionConst.java
+++ b/src/main/java/org/apache/bcel/ExceptionConst.java
@@ -49,10 +49,6 @@ public enum EXCS {
EXCS_ARRAY_EXCEPTION,
}
- /** Private constructor - utility class. */
- public ExceptionConst() {
- }
-
/**
* The mother of all exceptions
*/
@@ -68,13 +64,13 @@ public ExceptionConst() {
*/
public static final Class LINKING_EXCEPTION = LinkageError.class;
+ /** Exception class: ClassCircularityError. */
+ public static final Class CLASS_CIRCULARITY_ERROR = ClassCircularityError.class;
+
/**
* Linking Exceptions.
*/
- /** Exception class: ClassCircularityError. */
- public static final Class CLASS_CIRCULARITY_ERROR = ClassCircularityError.class;
-
/** Exception class: ClassFormatError. */
public static final Class CLASS_FORMAT_ERROR = ClassFormatError.class;
@@ -110,13 +106,13 @@ public ExceptionConst() {
/* UnsupportedClassVersionError is new in JDK 1.2 */
// public static final Class UnsupportedClassVersionError = UnsupportedClassVersionError.class;
+ /** Exception class: NullPointerException. */
+ public static final Class NULL_POINTER_EXCEPTION = NullPointerException.class;
+
/**
* Run-Time Exceptions.
*/
- /** Exception class: NullPointerException. */
- public static final Class NULL_POINTER_EXCEPTION = NullPointerException.class;
-
/** Exception class: ArrayIndexOutOfBoundsException. */
public static final Class ARRAY_INDEX_OUT_OF_BOUNDS_EXCEPTION = ArrayIndexOutOfBoundsException.class;
@@ -182,4 +178,8 @@ private static Class>[] mergeExceptions(final Class>[] input, final Class>
return ArrayUtils.addAll(input, extraClasses);
}
+ /** Private constructor - utility class. */
+ public ExceptionConst() {
+ }
+
}
diff --git a/src/main/java/org/apache/bcel/util/Args.java b/src/main/java/org/apache/bcel/util/Args.java
index f0647baa07..aa47024416 100644
--- a/src/main/java/org/apache/bcel/util/Args.java
+++ b/src/main/java/org/apache/bcel/util/Args.java
@@ -114,19 +114,6 @@ public static int requireU2(final int value, final String message) {
return requireU2(value, 0, message);
}
- /**
- * Requires a u4 value of at least {@code min}.
- *
- * @param value The value to test.
- * @param min The minimum required value.
- * @param message The message prefix.
- * @return The value to test.
- */
- public static int requireU4(final int value, final int min, final String message) {
- // Should really be 2^32-1, instead 2^21-1.
- return requireU4(value, min, Integer.MAX_VALUE, message);
- }
-
/**
* Requires a u4 value of at least {@code min} and not above {@code max}.
*
@@ -150,6 +137,19 @@ public static int requireU4(final int value, final int min, final int max, final
return value;
}
+ /**
+ * Requires a u4 value of at least {@code min}.
+ *
+ * @param value The value to test.
+ * @param min The minimum required value.
+ * @param message The message prefix.
+ * @return The value to test.
+ */
+ public static int requireU4(final int value, final int min, final String message) {
+ // Should really be 2^32-1, instead 2^21-1.
+ return requireU4(value, min, Integer.MAX_VALUE, message);
+ }
+
/**
* Requires a u4 value.
*
diff --git a/src/test/java/org/apache/bcel/classfile/JavaClassCyclicTest.java b/src/test/java/org/apache/bcel/classfile/JavaClassCyclicTest.java
index ac9e554d2f..93b2ac11f2 100644
--- a/src/test/java/org/apache/bcel/classfile/JavaClassCyclicTest.java
+++ b/src/test/java/org/apache/bcel/classfile/JavaClassCyclicTest.java
@@ -103,6 +103,27 @@ void tearDown() {
}
}
+ void test(final Callable callable) throws Exception {
+ final ExecutorService executor = Executors.newSingleThreadExecutor();
+ try {
+ final Future future = executor.submit(callable);
+ // Without fix: will timeout (infinite loop)
+ // With fix: throws ClassCircularityError immediately
+ future.get(3, TimeUnit.SECONDS);
+ fail("Should have thrown ClassCircularityError for cyclic hierarchy");
+ } catch (final TimeoutException e) {
+ fail("Timeout: infinite loop vulnerability detected");
+ } catch (final ExecutionException e) {
+ if (e.getCause() instanceof ClassFormatException) {
+ // Expected with fix - test passes
+ return;
+ }
+ throw e;
+ } finally {
+ executor.shutdownNow();
+ }
+ }
+
/**
* Tests that getAllInterfaces() handles cyclic interface hierarchies gracefully. BUG: Without fix, getAllInterfaces() has no visited-node check before
* enqueueing, causing infinite queue growth and eventual heap exhaustion (OutOfMemoryError). FIXED: With the fix, already-visited nodes are skipped,
@@ -141,25 +162,4 @@ void testGetAllInterfacesCyclic() throws Exception {
void testGetSuperClassesCyclic() throws Exception {
test(cyclicClassA::getSuperClasses);
}
-
- void test(final Callable callable) throws Exception {
- final ExecutorService executor = Executors.newSingleThreadExecutor();
- try {
- final Future future = executor.submit(callable);
- // Without fix: will timeout (infinite loop)
- // With fix: throws ClassCircularityError immediately
- future.get(3, TimeUnit.SECONDS);
- fail("Should have thrown ClassCircularityError for cyclic hierarchy");
- } catch (final TimeoutException e) {
- fail("Timeout: infinite loop vulnerability detected");
- } catch (final ExecutionException e) {
- if (e.getCause() instanceof ClassFormatException) {
- // Expected with fix - test passes
- return;
- }
- throw e;
- } finally {
- executor.shutdownNow();
- }
- }
}
From dd744dd8e313318d0a97aaf02af8efb1104f5fcb Mon Sep 17 00:00:00 2001
From: nbauma109
Date: Sun, 1 Feb 2026 21:54:37 +0100
Subject: [PATCH 15/83] Add support for permitted subclasses (#493)
* Add support for permitted subclasses
* fix checkstyle issues
* fix checksyle issues
* Added javadoc descriptions
* added javadoc
* Javadoc
Updated documentation for ATTR_PERMITTED_SUBCLASSES constant.
---------
Co-authored-by: nbauma109
Co-authored-by: Gary Gregory
---
src/main/java/org/apache/bcel/Const.java | 12 +-
.../org/apache/bcel/classfile/Attribute.java | 2 +
.../bcel/classfile/DescendingVisitor.java | 8 +
.../apache/bcel/classfile/EmptyVisitor.java | 5 +
.../bcel/classfile/PermittedSubclasses.java | 177 ++++++++++++++++++
.../org/apache/bcel/classfile/Visitor.java | 10 +
.../statics/StringRepresentation.java | 11 ++
.../classfile/PermittedSubclassesTest.java | 72 +++++++
src/test/resources/sealed/SealedDemo.java | 43 +++++
.../sealed/sealed-demo-jdk21.0.8.jar | Bin 0 -> 2788 bytes
10 files changed, 338 insertions(+), 2 deletions(-)
create mode 100644 src/main/java/org/apache/bcel/classfile/PermittedSubclasses.java
create mode 100644 src/test/java/org/apache/bcel/classfile/PermittedSubclassesTest.java
create mode 100644 src/test/resources/sealed/SealedDemo.java
create mode 100644 src/test/resources/sealed/sealed-demo-jdk21.0.8.jar
diff --git a/src/main/java/org/apache/bcel/Const.java b/src/main/java/org/apache/bcel/Const.java
index 24445b2e39..60336ef0e5 100644
--- a/src/main/java/org/apache/bcel/Const.java
+++ b/src/main/java/org/apache/bcel/Const.java
@@ -3168,13 +3168,21 @@ public final class Const {
/** Attribute constant for Record. */
public static final byte ATTR_RECORD = 27;
+ /**
+ * Attribute constant for PermittedSubclasses.
+ *
+ * @since 6.13.0
+ */
+ public static final byte ATTR_PERMITTED_SUBCLASSES = 28;
+
/** Count of known attributes. */
- public static final short KNOWN_ATTRIBUTES = 28; // count of attributes
+ public static final short KNOWN_ATTRIBUTES = 29; // count of attributes
private static final String[] ATTRIBUTE_NAMES = { "SourceFile", "ConstantValue", "Code", "Exceptions", "LineNumberTable", "LocalVariableTable",
"InnerClasses", "Synthetic", "Deprecated", "PMGClass", "Signature", "StackMap", "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations",
"RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations", "AnnotationDefault", "LocalVariableTypeTable", "EnclosingMethod",
- "StackMapTable", "BootstrapMethods", "MethodParameters", "Module", "ModulePackages", "ModuleMainClass", "NestHost", "NestMembers", "Record" };
+ "StackMapTable", "BootstrapMethods", "MethodParameters", "Module", "ModulePackages", "ModuleMainClass", "NestHost", "NestMembers", "Record",
+ "PermittedSubclasses" };
/**
* Constants used in the StackMap attribute.
diff --git a/src/main/java/org/apache/bcel/classfile/Attribute.java b/src/main/java/org/apache/bcel/classfile/Attribute.java
index d78c5f562b..90246fa422 100644
--- a/src/main/java/org/apache/bcel/classfile/Attribute.java
+++ b/src/main/java/org/apache/bcel/classfile/Attribute.java
@@ -199,6 +199,8 @@ public static Attribute readAttribute(final DataInput dataInput, final ConstantP
return new NestMembers(nameIndex, length, dataInput, constantPool);
case Const.ATTR_RECORD:
return new Record(nameIndex, length, dataInput, constantPool);
+ case Const.ATTR_PERMITTED_SUBCLASSES:
+ return new PermittedSubclasses(nameIndex, length, dataInput, constantPool);
default:
// Never reached
throw new IllegalStateException("Unrecognized attribute type tag parsed: " + tag);
diff --git a/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java b/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
index 45180804d9..37f72df782 100644
--- a/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
+++ b/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
@@ -496,6 +496,14 @@ public void visitNestMembers(final NestMembers obj) {
stack.pop();
}
+ /** @since 6.13.0 */
+ @Override
+ public void visitPermittedSubclasses(final PermittedSubclasses obj) {
+ stack.push(obj);
+ obj.accept(visitor);
+ stack.pop();
+ }
+
/**
* @since 6.0
*/
diff --git a/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java b/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java
index 7a16e9ba1e..7a5165bdaf 100644
--- a/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java
+++ b/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java
@@ -284,6 +284,11 @@ public void visitNestHost(final NestHost obj) {
public void visitNestMembers(final NestMembers obj) {
}
+ /** @since 6.13.0 */
+ @Override
+ public void visitPermittedSubclasses(final PermittedSubclasses obj) {
+ }
+
/**
* @since 6.0
*/
diff --git a/src/main/java/org/apache/bcel/classfile/PermittedSubclasses.java b/src/main/java/org/apache/bcel/classfile/PermittedSubclasses.java
new file mode 100644
index 0000000000..b5e48f8c65
--- /dev/null
+++ b/src/main/java/org/apache/bcel/classfile/PermittedSubclasses.java
@@ -0,0 +1,177 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.bcel.classfile;
+
+import java.io.DataInput;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+
+import org.apache.bcel.Const;
+import org.apache.bcel.util.Args;
+import org.apache.commons.lang3.ArrayUtils;
+
+/**
+ * This class is derived from Attribute and records the classes and interfaces that are permitted to extend or
+ * implement the current class or interface. There may be at most one PermittedSubclasses attribute in a ClassFile
+ * structure.
+ *
+ * @see Attribute
+ * @since 6.13.0
+ */
+public final class PermittedSubclasses extends Attribute {
+
+ private int[] classes;
+
+ /**
+ * Constructs object from input stream.
+ *
+ * @param nameIndex Index in constant pool.
+ * @param length Content length in bytes.
+ * @param dataInput Input stream.
+ * @param constantPool Array of constants.
+ * @throws IOException if an I/O error occurs.
+ */
+ PermittedSubclasses(final int nameIndex, final int length, final DataInput dataInput, final ConstantPool constantPool) throws IOException {
+ this(nameIndex, length, (int[]) null, constantPool);
+ classes = ClassParser.readU2U2Table(dataInput);
+ }
+
+ /**
+ * Constructs object from table of class indices in constant pool.
+ *
+ * @param nameIndex Index in constant pool.
+ * @param length Content length in bytes.
+ * @param classes Table of indices in constant pool.
+ * @param constantPool Array of constants.
+ */
+ public PermittedSubclasses(final int nameIndex, final int length, final int[] classes, final ConstantPool constantPool) {
+ super(Const.ATTR_PERMITTED_SUBCLASSES, nameIndex, length, constantPool);
+ this.classes = ArrayUtils.nullToEmpty(classes);
+ Args.requireU2(this.classes.length, "classes.length");
+ }
+
+ /**
+ * Initialize from another object. Note that both objects use the same references (shallow copy). Use copy() for a
+ * physical copy.
+ *
+ * @param c Source to copy.
+ */
+ public PermittedSubclasses(final PermittedSubclasses c) {
+ this(c.getNameIndex(), c.getLength(), c.getClasses(), c.getConstantPool());
+ }
+
+ /**
+ * Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class.
+ * I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.
+ *
+ * @param v Visitor object.
+ */
+ @Override
+ public void accept(final Visitor v) {
+ v.visitPermittedSubclasses(this);
+ }
+
+ /**
+ * Creates a deep clone of this object given constant pool.
+ *
+ * @return deep copy of this attribute.
+ */
+ @Override
+ public Attribute copy(final ConstantPool constantPool) {
+ final PermittedSubclasses c = (PermittedSubclasses) clone();
+ if (classes.length > 0) {
+ c.classes = classes.clone();
+ }
+ c.setConstantPool(constantPool);
+ return c;
+ }
+
+ /**
+ * Dumps PermittedSubclasses attribute to file stream in binary format.
+ *
+ * @param file Output file stream.
+ * @throws IOException if an I/O error occurs.
+ */
+ @Override
+ public void dump(final DataOutputStream file) throws IOException {
+ super.dump(file);
+ file.writeShort(classes.length);
+ for (final int index : classes) {
+ file.writeShort(index);
+ }
+ }
+
+ /**
+ * Gets the class indices in constant pool.
+ *
+ * @return array of indices into constant pool of class names.
+ */
+ public int[] getClasses() {
+ return classes;
+ }
+
+ /**
+ * Gets permitted class names.
+ *
+ * @return string array of class names.
+ */
+ public String[] getClassNames() {
+ final String[] names = new String[classes.length];
+ Arrays.setAll(names, i -> Utility.pathToPackage(super.getConstantPool().getConstantString(classes[i], Const.CONSTANT_Class)));
+ return names;
+ }
+
+ /**
+ * Gets the number of classes.
+ *
+ * @return Length of classes table.
+ */
+ public int getNumberClasses() {
+ return classes.length;
+ }
+
+ /**
+ * Sets class indices.
+ *
+ * @param classes the list of class indexes Also redefines number_of_classes according to table length.
+ */
+ public void setClasses(final int[] classes) {
+ this.classes = ArrayUtils.nullToEmpty(classes);
+ }
+
+ /**
+ * String representation of PermittedSubclasses (for debugging purposes).
+ *
+ * @return String representation, that is, a list of permitted subclasses.
+ */
+ @Override
+ public String toString() {
+ final StringBuilder buf = new StringBuilder();
+ buf.append("PermittedSubclasses(");
+ buf.append(classes.length);
+ buf.append("):\n");
+ for (final int index : classes) {
+ final String className = super.getConstantPool().getConstantString(index, Const.CONSTANT_Class);
+ buf.append(" ").append(Utility.compactClassName(className, false)).append("\n");
+ }
+ return buf.substring(0, buf.length() - 1); // remove the last newline
+ }
+}
diff --git a/src/main/java/org/apache/bcel/classfile/Visitor.java b/src/main/java/org/apache/bcel/classfile/Visitor.java
index 86fa8b572e..5df8e24332 100644
--- a/src/main/java/org/apache/bcel/classfile/Visitor.java
+++ b/src/main/java/org/apache/bcel/classfile/Visitor.java
@@ -411,6 +411,16 @@ default void visitNestMembers(final NestMembers obj) {
// empty
}
+ /**
+ * Visits a PermittedSubclasses attribute.
+ *
+ * @param obj the attribute.
+ * @since 6.13.0
+ */
+ default void visitPermittedSubclasses(final PermittedSubclasses obj) {
+ // empty
+ }
+
/**
* Visits a ParameterAnnotations attribute.
*
diff --git a/src/main/java/org/apache/bcel/verifier/statics/StringRepresentation.java b/src/main/java/org/apache/bcel/verifier/statics/StringRepresentation.java
index 88b0d53cda..e9329f909c 100644
--- a/src/main/java/org/apache/bcel/verifier/statics/StringRepresentation.java
+++ b/src/main/java/org/apache/bcel/verifier/statics/StringRepresentation.java
@@ -61,6 +61,7 @@
import org.apache.bcel.classfile.Node;
import org.apache.bcel.classfile.ParameterAnnotationEntry;
import org.apache.bcel.classfile.ParameterAnnotations;
+import org.apache.bcel.classfile.PermittedSubclasses;
import org.apache.bcel.classfile.Record;
import org.apache.bcel.classfile.RecordComponentInfo;
import org.apache.bcel.classfile.Signature;
@@ -385,6 +386,16 @@ public void visitNestMembers(final NestMembers obj) {
tostring = toString(obj);
}
+ /**
+ * Visits PermittedSubclasses attribute.
+ *
+ * @since 6.13.0
+ */
+ @Override
+ public void visitPermittedSubclasses(final PermittedSubclasses obj) {
+ tostring = toString(obj);
+ }
+
/**
* @since 6.0
*/
diff --git a/src/test/java/org/apache/bcel/classfile/PermittedSubclassesTest.java b/src/test/java/org/apache/bcel/classfile/PermittedSubclassesTest.java
new file mode 100644
index 0000000000..503349caf1
--- /dev/null
+++ b/src/test/java/org/apache/bcel/classfile/PermittedSubclassesTest.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.bcel.classfile;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.List;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+import org.apache.bcel.AbstractTest;
+import org.apache.bcel.verifier.statics.StringRepresentation;
+import org.junit.jupiter.api.Test;
+
+class PermittedSubclassesTest extends AbstractTest {
+
+ private static final String SEALED_JAR_PATH = "src/test/resources/sealed/sealed-demo-jdk21.0.8.jar";
+
+ private static final String SHAPE_CLASS_ENTRY = "org/jd/core/v1/SealedDemo$Shape.class";
+
+ private JavaClass parseJarClass(final String entryName) throws IOException {
+ try (JarFile jar = new JarFile(SEALED_JAR_PATH)) {
+ final JarEntry entry = jar.getJarEntry(entryName);
+ assertNotNull(entry, "Missing jar entry: " + entryName);
+ try (InputStream inputStream = jar.getInputStream(entry)) {
+ return new ClassParser(inputStream, entryName).parse();
+ }
+ }
+ }
+
+ @Test
+ void readsPermittedSubclassesAttribute() throws IOException {
+ final JavaClass clazz = parseJarClass(SHAPE_CLASS_ENTRY);
+ final Attribute[] attributes = findAttribute("PermittedSubclasses", clazz);
+ assertEquals(1, attributes.length, "Expected one PermittedSubclasses attribute");
+ final PermittedSubclasses permittedSubclasses = (PermittedSubclasses) attributes[0];
+ final List classNames = Arrays.asList(permittedSubclasses.getClassNames());
+ assertEquals(2, classNames.size(), "Expected two permitted subclasses");
+ assertTrue(classNames.contains("org.jd.core.v1.SealedDemo$Circle"), "Missing permitted subclass Circle");
+ assertTrue(classNames.contains("org.jd.core.v1.SealedDemo$Rectangle"), "Missing permitted subclass Rectangle");
+ }
+
+ @Test
+ void stringRepresentationHandlesPermittedSubclasses() throws IOException {
+ final JavaClass clazz = parseJarClass(SHAPE_CLASS_ENTRY);
+ final Attribute[] attributes = findAttribute("PermittedSubclasses", clazz);
+ final PermittedSubclasses permittedSubclasses = (PermittedSubclasses) attributes[0];
+ assertEquals(permittedSubclasses.toString(), new StringRepresentation(permittedSubclasses).toString());
+ }
+}
diff --git a/src/test/resources/sealed/SealedDemo.java b/src/test/resources/sealed/SealedDemo.java
new file mode 100644
index 0000000000..cda1f71b9f
--- /dev/null
+++ b/src/test/resources/sealed/SealedDemo.java
@@ -0,0 +1,43 @@
+package org.jd.core.v1;
+
+public class SealedDemo {
+
+ sealed interface Shape permits Circle, Rectangle {
+ double area();
+ }
+
+ static final class Circle implements Shape {
+ private final double radius;
+
+ Circle(double radius) {
+ this.radius = radius;
+ }
+
+ @Override
+ public double area() {
+ return Math.PI * radius * radius;
+ }
+ }
+
+ static non-sealed class Rectangle implements Shape {
+ private final double width;
+ private final double height;
+
+ Rectangle(double width, double height) {
+ this.width = width;
+ this.height = height;
+ }
+
+ @Override
+ public double area() {
+ return width * height;
+ }
+ }
+
+ double sealedSwitch(Shape shape) {
+ return switch (shape) {
+ case Circle circle -> circle.area();
+ case Rectangle rectangle -> rectangle.area();
+ };
+ }
+}
diff --git a/src/test/resources/sealed/sealed-demo-jdk21.0.8.jar b/src/test/resources/sealed/sealed-demo-jdk21.0.8.jar
new file mode 100644
index 0000000000000000000000000000000000000000..46d49ef985cb38e3a989d3c1665d65c81e90cd59
GIT binary patch
literal 2788
zcma)82{e>#8y@>Mbqu4XKfW(M`!X|V8j3P@#)u*NU}Eg+)Qo&tz6L|~B~zwBLks;W
zV@)ZBvXn?fiIT`t$&js-Z|3j+;`E=K|9a1R&hwu4dG7l@_jT^;x$Mvag5m&xC;;GX
zjPd|%f*3#$fH8AKX<6Bt!@fNL0PMJ1!2nTF(f`>B<{ta86@#+1GBY!MhQ|sRjbVX8&33x1^L2!!ifYJSsUg+z=sfgO$njl
ziY9?XpAZ7nCj@`&SW*rS-3kX&U%f9K2^tw@ESx;=U?<{sM;dJJWQw1;-!@wfz1clv
zJ+xYHY9|O=<}MrPPmX_hGa=Kg?X*oXyFW)KhuQ{5j7JU6-;5{V
zmZ&YKAvFSnQKcr-@isqX8n9|VP+A(kE9g{X6*cyu*u~0Oaz))}(bS7EWtZSvPdI`}
z=$BCz@&eVQaR{*q##jirAV+Y1d0=UPk*Q#^818wpIb7`QP$lxVFCA6f81r!P{{5-T
zD!$3fW0R>B&96PrqLEAO$>jl~SmDKi`03d^8k&8CwJ)J}yZIB4N|;UO`h)s63J{&0
z3hA~9@F(_!bL)BC-bJf-voTr8%nLR(A7?Kfaec}i+_`)I8N5Bewl8-`?m2am;p0g82*iT!e3}jTbE&~cVvv%YTF;5
zf@_D@BM>BaM}q~l{#zwhnIqc8sg6R&Dwk!7J6SsHaUawv=JCof5gSY70{{Z~x8hZ8
zOJ1=ApX2y2|9_~>uzz9QY9wjcR};9q^y!~X{ePOh5J?z4uaJTQr&97MSue<&JPOd*p#z`q80ugvrZ3$ujNk_?F{;U4
zWGtm&GCA(nVfen_3I%c1xA^A}3dSX4tf=qf{z6q+_efpe8HH?|v!_MyB+!p;Bt=|~
zLoSMrtFNSF&6V5uy1iKvGV0gJLC2+^r+gW5-2;!ygt(6x7F0LPYKVkJ3!)BbgZ&U6L-2O
zc70Pbsyy6c*Oq+BQmV5R9Dks+zE$c)F5m4Q)-}dNyn_>zQ}7zrE`w)OqahxAmp)6B
z-Q}dm+*wM0Z84(9#Jgr5lby7`$8T=OR(z$YosB=&viE|nlF5DtW8q2Nb8;Q;;huL~
z7gd~2w9Gwit*4ZG(Gc%;CLp{KF3zM!)z|lHl+B#hY4kLM=|7mPa$OPRQ4BU}^GfGZ
z9KR*SN?TIw5P*;P@8puQF}AHnz@%a{-O7ZSL=g-zq6mdRA_e=!*}{_g?BhrCP5XfK
zi-xii+nbq^wi;}8&vdQz#?|*9i+f;zWj&`UPAN}@L^e0kjC0g&p
zS`IvVqEeGiT?j$cclRR(#lIw`g>?mju1R-mzplFd4pWxYBqV$Ah)nXdQ{m%R@2yhm
zjT6~k;lPg6fQ)fqtR+9_OrxP9BqS!4x#Ch{m>#i*Q_$669|2LxMQgK9J7Q(!SA}?e
zgob}@Smbsoj@!#$OW^NY_3^v*WjH>^N~6Gr7@EBNwID@Js*<-p6|rWM
z@s-$hpN6sm3et|WdP6X8*VE}%UqfdUj6*>+r3v!y?_NzAE1C@=P^S*fNt6o-
z;eaD5Dnhm|vpj=J#%5@{%vGQd(72<|^dV
zirlNNb#_rIPfJFrsuTAz^E+nh{8Hd0DQ1roJcSR{3oYO4RGadL9NgV#+@;36w=93z
z`!9L&Wu#fRn-cqR(IAH9GV)w<>8fw%zv&wjbp`;kV%HX-Bv?g35iamW@A
zlym)0s-zM;<*kU0eDtVbDpPnCK~S~mICx9B)l#6D^{+%RJ)K>xqYW_-w>0QrokZgp
z&Vx;&uIQ_(mz5l;MQ~isUK={xt>U{2UZW}At|eNo9r#Q;-1YjKp+>A^*mHIL4=9`D
z$lX!k;e46>CRj#)77l@nwJ1Xz$zp-07N=YK9^r!B%WAU^-*nYU%<{v4}aQAg4Ge0k0X6_<(?ytBP@hm5JPsAmb
z#>7>9AIZod#C$M+-Xm%oYN&j#E?r<+pmO;oM=}G|Gt~;u$e{~JK{)*BV?lCjGI8^Q
zwDy5RM$t}lk202jFOfO%PXCFniD9`ZJ56^HRQN7kZnR~R154>%@%a{eya~1Y!)HH!
zR`bE@jSEEdZ@4q4qgT}Yw_9oUx)H7OVrg`|l$x8N5;-uv*U}?18tNlEs5&WFaZ+*x
zdf>_fs&U03RH!q`Bd2~D6!+v!v;Z~dFZzqg}JFVtqm{rCRj%sU{=eLA>eDJ;hO`WuH>
BQsDpq
literal 0
HcmV?d00001
From 952c64b594d8bb03622383bc7340f2b2f9a84c2e Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sun, 1 Feb 2026 15:56:34 -0500
Subject: [PATCH 16/83] Add support for permitted subclasses #493
Sort members
---
src/changes/changes.xml | 1 +
.../bcel/classfile/DescendingVisitor.java | 16 +++++++--------
.../apache/bcel/classfile/EmptyVisitor.java | 10 +++++-----
.../org/apache/bcel/classfile/Visitor.java | 20 +++++++++----------
.../statics/StringRepresentation.java | 14 ++++++-------
5 files changed, 31 insertions(+), 30 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 30e4256623..b6a69423b5 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -62,6 +62,7 @@ The type attribute can be add,update,fix,remove.
Fix constant pool module access test on Java 26 and above #492.
+ Add support for permitted subclasses #493.
Bump org.apache.commons:commons-parent from 95 to 96.
diff --git a/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java b/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
index 37f72df782..816bf091d2 100644
--- a/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
+++ b/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
@@ -496,14 +496,6 @@ public void visitNestMembers(final NestMembers obj) {
stack.pop();
}
- /** @since 6.13.0 */
- @Override
- public void visitPermittedSubclasses(final PermittedSubclasses obj) {
- stack.push(obj);
- obj.accept(visitor);
- stack.pop();
- }
-
/**
* @since 6.0
*/
@@ -522,6 +514,14 @@ public void visitParameterAnnotationEntry(final ParameterAnnotationEntry obj) {
stack.pop();
}
+ /** @since 6.13.0 */
+ @Override
+ public void visitPermittedSubclasses(final PermittedSubclasses obj) {
+ stack.push(obj);
+ obj.accept(visitor);
+ stack.pop();
+ }
+
@Override
public void visitRecord(final Record record) {
stack.push(record);
diff --git a/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java b/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java
index 7a5165bdaf..d8f315cfaf 100644
--- a/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java
+++ b/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java
@@ -284,11 +284,6 @@ public void visitNestHost(final NestHost obj) {
public void visitNestMembers(final NestMembers obj) {
}
- /** @since 6.13.0 */
- @Override
- public void visitPermittedSubclasses(final PermittedSubclasses obj) {
- }
-
/**
* @since 6.0
*/
@@ -303,6 +298,11 @@ public void visitParameterAnnotation(final ParameterAnnotations obj) {
public void visitParameterAnnotationEntry(final ParameterAnnotationEntry parameterAnnotationEntry) {
}
+ /** @since 6.13.0 */
+ @Override
+ public void visitPermittedSubclasses(final PermittedSubclasses obj) {
+ }
+
@Override
public void visitSignature(final Signature obj) {
}
diff --git a/src/main/java/org/apache/bcel/classfile/Visitor.java b/src/main/java/org/apache/bcel/classfile/Visitor.java
index 5df8e24332..7ea0fa6569 100644
--- a/src/main/java/org/apache/bcel/classfile/Visitor.java
+++ b/src/main/java/org/apache/bcel/classfile/Visitor.java
@@ -411,16 +411,6 @@ default void visitNestMembers(final NestMembers obj) {
// empty
}
- /**
- * Visits a PermittedSubclasses attribute.
- *
- * @param obj the attribute.
- * @since 6.13.0
- */
- default void visitPermittedSubclasses(final PermittedSubclasses obj) {
- // empty
- }
-
/**
* Visits a ParameterAnnotations attribute.
*
@@ -437,6 +427,16 @@ default void visitPermittedSubclasses(final PermittedSubclasses obj) {
*/
void visitParameterAnnotationEntry(ParameterAnnotationEntry obj);
+ /**
+ * Visits a PermittedSubclasses attribute.
+ *
+ * @param obj the attribute.
+ * @since 6.13.0
+ */
+ default void visitPermittedSubclasses(final PermittedSubclasses obj) {
+ // empty
+ }
+
/**
* Visits a {@link Record} object.
*
diff --git a/src/main/java/org/apache/bcel/verifier/statics/StringRepresentation.java b/src/main/java/org/apache/bcel/verifier/statics/StringRepresentation.java
index e9329f909c..0ba7801d66 100644
--- a/src/main/java/org/apache/bcel/verifier/statics/StringRepresentation.java
+++ b/src/main/java/org/apache/bcel/verifier/statics/StringRepresentation.java
@@ -387,12 +387,10 @@ public void visitNestMembers(final NestMembers obj) {
}
/**
- * Visits PermittedSubclasses attribute.
- *
- * @since 6.13.0
+ * @since 6.0
*/
@Override
- public void visitPermittedSubclasses(final PermittedSubclasses obj) {
+ public void visitParameterAnnotation(final ParameterAnnotations obj) {
tostring = toString(obj);
}
@@ -400,15 +398,17 @@ public void visitPermittedSubclasses(final PermittedSubclasses obj) {
* @since 6.0
*/
@Override
- public void visitParameterAnnotation(final ParameterAnnotations obj) {
+ public void visitParameterAnnotationEntry(final ParameterAnnotationEntry obj) {
tostring = toString(obj);
}
/**
- * @since 6.0
+ * Visits PermittedSubclasses attribute.
+ *
+ * @since 6.13.0
*/
@Override
- public void visitParameterAnnotationEntry(final ParameterAnnotationEntry obj) {
+ public void visitPermittedSubclasses(final PermittedSubclasses obj) {
tostring = toString(obj);
}
From a67d64ae04ebbdc11418f1a052d024dec97528e1 Mon Sep 17 00:00:00 2001
From: nbauma109
Date: Sun, 1 Feb 2026 21:57:10 +0100
Subject: [PATCH 17/83] Add getAttribute(final byte tag) to RecordComponentInfo
(#494)
* Add getAttribute(final byte tag) to RecordComponentInfo
* fix checkstyle issues
* Make a separate record test testRecordComponentGetAttribute
* Javadoc
---------
Co-authored-by: nbauma109
Co-authored-by: Gary Gregory
---
.../bcel/classfile/RecordComponentInfo.java | 19 +++++++++++++++++++
.../org/apache/bcel/classfile/RecordTest.java | 12 ++++++++++++
2 files changed, 31 insertions(+)
diff --git a/src/main/java/org/apache/bcel/classfile/RecordComponentInfo.java b/src/main/java/org/apache/bcel/classfile/RecordComponentInfo.java
index 2aabce87e2..4a1c349aa0 100644
--- a/src/main/java/org/apache/bcel/classfile/RecordComponentInfo.java
+++ b/src/main/java/org/apache/bcel/classfile/RecordComponentInfo.java
@@ -77,6 +77,25 @@ public void dump(final DataOutputStream file) throws IOException {
}
}
+ /**
+ * Gets the attribute for the given tag if present, or null if absent.
+ *
+ * @param the attribute type.
+ * @param tag the attribute tag.
+ * @return Attribute for given tag, null if not found.
+ * Refer to {@link org.apache.bcel.Const#ATTR_UNKNOWN} constants named ATTR_* for possible values.
+ * @since 6.13.0
+ */
+ @SuppressWarnings("unchecked")
+ public final T getAttribute(final byte tag) {
+ for (final Attribute attribute : getAttributes()) {
+ if (attribute.getTag() == tag) {
+ return (T) attribute;
+ }
+ }
+ return null;
+ }
+
/**
* Gets all attributes.
*
diff --git a/src/test/java/org/apache/bcel/classfile/RecordTest.java b/src/test/java/org/apache/bcel/classfile/RecordTest.java
index 9588e4e761..afdd7fe32e 100644
--- a/src/test/java/org/apache/bcel/classfile/RecordTest.java
+++ b/src/test/java/org/apache/bcel/classfile/RecordTest.java
@@ -21,12 +21,14 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.File;
import java.io.IOException;
import org.apache.bcel.AbstractTest;
+import org.apache.bcel.Const;
import org.apache.bcel.util.SyntheticRepository;
import org.apache.bcel.visitors.CountingVisitor;
import org.junit.jupiter.api.Test;
@@ -118,4 +120,14 @@ void testRecordToString() throws ClassNotFoundException, ClassFormatException, I
assertEquals("RecordComponentInfo(aNumber,I,0):", firstComponent.toString());
}
+ @Test
+ void testRecordComponentGetAttribute() throws ClassFormatException, IOException {
+ final JavaClass clazz = new ClassParser("src/test/resources/record/SimpleRecord.class").parse();
+ final Record recordAttribute = (Record) findAttribute("Record", clazz)[0];
+ final RecordComponentInfo secondComponent = recordAttribute.getComponents()[1];
+ final RuntimeVisibleAnnotations ann = secondComponent.getAttribute(Const.ATTR_RUNTIME_VISIBLE_ANNOTATIONS);
+ assertEquals("RuntimeVisibleAnnotations:\n"
+ + " @Ljavax/annotation/Nonnull;", ann.toString());
+ assertNull(secondComponent.getAttribute(Const.ATTR_RUNTIME_INVISIBLE_ANNOTATIONS));
+ }
}
From b06de6e36ea76f550d34083ccb280a5ad7b8f2d5 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sun, 1 Feb 2026 15:58:54 -0500
Subject: [PATCH 18/83] Add RecordComponentInfo.getAttribute(byte tag)#494.
---
src/changes/changes.xml | 1 +
.../org/apache/bcel/classfile/RecordTest.java | 22 +++++++++----------
2 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index b6a69423b5..e6c15c9ded 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -63,6 +63,7 @@ The type attribute can be add,update,fix,remove.
Fix constant pool module access test on Java 26 and above #492.
Add support for permitted subclasses #493.
+ Add RecordComponentInfo.getAttribute(byte tag)#494.
Bump org.apache.commons:commons-parent from 95 to 96.
diff --git a/src/test/java/org/apache/bcel/classfile/RecordTest.java b/src/test/java/org/apache/bcel/classfile/RecordTest.java
index afdd7fe32e..aa4c30aec5 100644
--- a/src/test/java/org/apache/bcel/classfile/RecordTest.java
+++ b/src/test/java/org/apache/bcel/classfile/RecordTest.java
@@ -92,6 +92,17 @@ void testRecordClassSaysItIs() throws ClassNotFoundException, ClassFormatExcepti
assertFalse(simpleClazz.isRecord(), "Expected SimpleClass class to say it was not a record - but it didn't !");
}
+ @Test
+ void testRecordComponentGetAttribute() throws ClassFormatException, IOException {
+ final JavaClass clazz = new ClassParser("src/test/resources/record/SimpleRecord.class").parse();
+ final Record recordAttribute = (Record) findAttribute("Record", clazz)[0];
+ final RecordComponentInfo secondComponent = recordAttribute.getComponents()[1];
+ final RuntimeVisibleAnnotations ann = secondComponent.getAttribute(Const.ATTR_RUNTIME_VISIBLE_ANNOTATIONS);
+ assertEquals("RuntimeVisibleAnnotations:\n"
+ + " @Ljavax/annotation/Nonnull;", ann.toString());
+ assertNull(secondComponent.getAttribute(Const.ATTR_RUNTIME_INVISIBLE_ANNOTATIONS));
+ }
+
/**
* A simple record with two simple fields, an integer and a String field, should
* show its content in its string representation.
@@ -119,15 +130,4 @@ void testRecordToString() throws ClassNotFoundException, ClassFormatException, I
assertEquals(recordAttribute.getConstantPool(), firstComponent.getConstantPool());
assertEquals("RecordComponentInfo(aNumber,I,0):", firstComponent.toString());
}
-
- @Test
- void testRecordComponentGetAttribute() throws ClassFormatException, IOException {
- final JavaClass clazz = new ClassParser("src/test/resources/record/SimpleRecord.class").parse();
- final Record recordAttribute = (Record) findAttribute("Record", clazz)[0];
- final RecordComponentInfo secondComponent = recordAttribute.getComponents()[1];
- final RuntimeVisibleAnnotations ann = secondComponent.getAttribute(Const.ATTR_RUNTIME_VISIBLE_ANNOTATIONS);
- assertEquals("RuntimeVisibleAnnotations:\n"
- + " @Ljavax/annotation/Nonnull;", ann.toString());
- assertNull(secondComponent.getAttribute(Const.ATTR_RUNTIME_INVISIBLE_ANNOTATIONS));
- }
}
From 7c273073beff91b2d1d15a27324b620bdd5f2b80 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sun, 1 Feb 2026 16:17:46 -0500
Subject: [PATCH 19/83] Bump next release to 6.13.0.
---
pom.xml | 6 +++---
src/changes/changes.xml | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index a402106350..3c97d8b0be 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
org.apache.bcel
bcel
jar
- 6.12.1-SNAPSHOT
+ 6.13.0-SNAPSHOT
Apache Commons BCEL
The Commons Byte Code Engineering Library (BCEL) is designed to provide users with a convenient way to analyze, create, and manipulate compiled .class files.
https://commons.apache.org/proper/commons-bcel
@@ -44,8 +44,8 @@
1.8
bcel
org.apache.bcel
- 6.12.1
- 6.12.2
+ 6.13.0
+ 6.13.1
true
RC1
6.12.0
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index e6c15c9ded..b01907563f 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -59,7 +59,7 @@ The type attribute can be add,update,fix,remove.
Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.
-->
-
+
Fix constant pool module access test on Java 26 and above #492.
Add support for permitted subclasses #493.
From 95da538d6d7e1493c9f68b354db061a95c93b246 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Fri, 6 Feb 2026 12:34:41 +0000
Subject: [PATCH 20/83] Bump github/codeql-action from 4.32.0 to 4.32.2
---
.github/workflows/codeql-analysis.yml | 6 +++---
.github/workflows/scorecards-analysis.yml | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 658b44aef9..3fb81ad790 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -57,7 +57,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
+ uses: github/codeql-action/init@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -68,7 +68,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
+ uses: github/codeql-action/autobuild@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2
# âšī¸ Command-line programs to run using the OS shell.
# đ https://git.io/JvXDl
@@ -82,4 +82,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
+ uses: github/codeql-action/analyze@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2
diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml
index 98e267bc0d..818c876ece 100644
--- a/.github/workflows/scorecards-analysis.yml
+++ b/.github/workflows/scorecards-analysis.yml
@@ -64,6 +64,6 @@ jobs:
retention-days: 5
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
+ uses: github/codeql-action/upload-sarif@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2
with:
sarif_file: results.sarif
From b7abe875ed9c9c12920bb685f8c026b9274d5ada Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Fri, 6 Feb 2026 09:18:17 -0500
Subject: [PATCH 21/83] Use max-parallel: 20 as asked by Apache Infra
---
.github/workflows/codeql-analysis.yml | 1 +
.github/workflows/maven.yml | 1 +
2 files changed, 2 insertions(+)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 3fb81ad790..858b59d146 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -37,6 +37,7 @@ jobs:
security-events: write
strategy:
+ max-parallel: 20
fail-fast: false
matrix:
language: [ 'java' ]
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index b34da06f30..13a4862e17 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -26,6 +26,7 @@ jobs:
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.experimental }}
strategy:
+ max-parallel: 20
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
java: [ 8, 11, 17, 21, 25 ]
From 38f194f69678dc94ff8c7a59b14b7ed4f42da734 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Mon, 9 Feb 2026 13:11:22 +0000
Subject: [PATCH 22/83] Bump actions/cache from 5.0.2 to 5.0.3
---
.github/workflows/codeql-analysis.yml | 2 +-
.github/workflows/maven.yml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 858b59d146..9ccfb03278 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -49,7 +49,7 @@ jobs:
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
+ - uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 #v5.0.3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 13a4862e17..647479cfcb 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -42,7 +42,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- - uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
+ - uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 #v5.0.3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
From 23d980a7742308e4da3c862a3e31f91bd242cefe Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Fri, 13 Feb 2026 17:32:51 -0500
Subject: [PATCH 23/83] Javadoc
---
.../org/apache/bcel/classfile/LineNumber.java | 12 +++++++
.../bcel/classfile/LineNumberTable.java | 11 ++++++
.../bcel/classfile/LocalVariableTable.java | 17 ++++++++++
.../classfile/LocalVariableTypeTable.java | 34 +++++++++++++++++++
.../bcel/classfile/MethodParameters.java | 10 ++++++
.../org/apache/bcel/classfile/Module.java | 8 +++++
.../apache/bcel/classfile/ModuleExports.java | 5 +++
.../bcel/classfile/ModuleMainClass.java | 6 ++++
.../apache/bcel/classfile/ModuleOpens.java | 5 +++
.../apache/bcel/classfile/ModulePackages.java | 10 ++++++
.../apache/bcel/classfile/ModuleProvides.java | 5 +++
.../apache/bcel/classfile/ModuleRequires.java | 5 +++
.../apache/bcel/generic/INVOKEDYNAMIC.java | 5 +++
.../apache/bcel/generic/INVOKEINTERFACE.java | 8 +++++
.../apache/bcel/generic/INVOKESPECIAL.java | 5 +++
.../org/apache/bcel/generic/INVOKESTATIC.java | 5 +++
.../apache/bcel/generic/INVOKEVIRTUAL.java | 5 +++
.../java/org/apache/bcel/generic/IOR.java | 3 ++
.../java/org/apache/bcel/generic/ISHL.java | 3 ++
.../java/org/apache/bcel/generic/ISHR.java | 3 ++
.../java/org/apache/bcel/generic/IUSHR.java | 3 ++
.../java/org/apache/bcel/generic/IXOR.java | 3 ++
.../bcel/generic/InstructionFactory.java | 3 +-
.../apache/bcel/generic/InstructionList.java | 2 ++
.../java/org/apache/bcel/generic/JSR.java | 5 +++
.../java/org/apache/bcel/generic/JSR_W.java | 5 +++
.../java/org/apache/bcel/generic/L2D.java | 3 ++
.../java/org/apache/bcel/generic/L2F.java | 3 ++
.../java/org/apache/bcel/generic/L2I.java | 3 ++
.../java/org/apache/bcel/generic/LADD.java | 3 ++
.../java/org/apache/bcel/generic/LAND.java | 3 ++
.../java/org/apache/bcel/generic/LCMP.java | 3 ++
.../java/org/apache/bcel/generic/LCONST.java | 5 +++
.../java/org/apache/bcel/generic/LDC.java | 15 +++++++-
.../java/org/apache/bcel/generic/LDC2_W.java | 11 ++++++
.../java/org/apache/bcel/generic/LDC_W.java | 5 +++
.../java/org/apache/bcel/generic/LDIV.java | 3 ++
.../java/org/apache/bcel/generic/LLOAD.java | 5 +++
.../java/org/apache/bcel/generic/LMUL.java | 3 ++
.../java/org/apache/bcel/generic/LNEG.java | 3 ++
.../org/apache/bcel/generic/LOOKUPSWITCH.java | 7 ++++
.../java/org/apache/bcel/generic/LOR.java | 3 ++
.../java/org/apache/bcel/generic/LREM.java | 3 ++
.../java/org/apache/bcel/generic/LRETURN.java | 3 ++
.../java/org/apache/bcel/generic/LSHL.java | 3 ++
.../java/org/apache/bcel/generic/LSHR.java | 3 ++
.../java/org/apache/bcel/generic/LSTORE.java | 5 +++
.../java/org/apache/bcel/generic/LSUB.java | 3 ++
.../java/org/apache/bcel/generic/LUSHR.java | 3 ++
.../java/org/apache/bcel/generic/LXOR.java | 3 ++
.../apache/bcel/generic/LineNumberGen.java | 23 +++++++++++++
.../org/apache/bcel/generic/MONITORENTER.java | 3 ++
.../org/apache/bcel/generic/MONITOREXIT.java | 3 ++
.../apache/bcel/generic/MethodObserver.java | 5 +++
.../java/org/apache/bcel/generic/Select.java | 11 +++++-
.../org/apache/bcel/util/JavaWrapper.java | 11 ++++++
.../util/LruCacheClassPathRepository.java | 6 ++++
.../MemorySensitiveClassPathRepository.java | 5 +++
.../apache/bcel/util/ModularRuntimeImage.java | 5 +++
.../verifier/exc/InvalidMethodException.java | 6 +++-
.../exc/LinkingConstraintException.java | 6 ++++
.../bcel/verifier/exc/LoadingException.java | 2 ++
...ocalVariableInfoInconsistentException.java | 2 ++
.../StructuralCodeConstraintException.java | 2 ++
.../verifier/statics/LocalVariableInfo.java | 6 ++++
65 files changed, 382 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/apache/bcel/classfile/LineNumber.java b/src/main/java/org/apache/bcel/classfile/LineNumber.java
index dfb7b501fa..a367b8390a 100644
--- a/src/main/java/org/apache/bcel/classfile/LineNumber.java
+++ b/src/main/java/org/apache/bcel/classfile/LineNumber.java
@@ -51,6 +51,8 @@ public final class LineNumber implements Cloneable, Node {
}
/**
+ * Constructs a LineNumber.
+ *
* @param startPc Program Counter (PC) corresponds to.
* @param lineNumber line number in source file.
*/
@@ -80,6 +82,8 @@ public void accept(final Visitor v) {
}
/**
+ * Creates a deep copy of this object.
+ *
* @return deep copy of this object.
*/
public LineNumber copy() {
@@ -103,6 +107,8 @@ public void dump(final DataOutputStream file) throws IOException {
}
/**
+ * Gets the line number.
+ *
* @return Corresponding source line.
*/
public int getLineNumber() {
@@ -110,6 +116,8 @@ public int getLineNumber() {
}
/**
+ * Gets the program counter.
+ *
* @return PC in code.
*/
public int getStartPC() {
@@ -117,6 +125,8 @@ public int getStartPC() {
}
/**
+ * Sets the line number.
+ *
* @param lineNumber the source line number.
*/
public void setLineNumber(final int lineNumber) {
@@ -124,6 +134,8 @@ public void setLineNumber(final int lineNumber) {
}
/**
+ * Sets the program counter.
+ *
* @param startPc the pc for this line number.
*/
public void setStartPC(final int startPc) {
diff --git a/src/main/java/org/apache/bcel/classfile/LineNumberTable.java b/src/main/java/org/apache/bcel/classfile/LineNumberTable.java
index a4c33343a9..77e550be50 100644
--- a/src/main/java/org/apache/bcel/classfile/LineNumberTable.java
+++ b/src/main/java/org/apache/bcel/classfile/LineNumberTable.java
@@ -78,6 +78,8 @@ public LineNumberTable(final int nameIndex, final int length, final LineNumber[]
*
* Note that both objects use the same references (shallow copy). Use copy() for a physical copy.
*
+ *
+ * @param c the instance to copy.
*/
public LineNumberTable(final LineNumberTable c) {
this(c.getNameIndex(), c.getLength(), c.getLineNumberTable(), c.getConstantPool());
@@ -124,6 +126,8 @@ public void dump(final DataOutputStream file) throws IOException {
}
/**
+ * Gets the line number table.
+ *
* @return Array of (pc offset, line number) pairs.
*/
public LineNumber[] getLineNumberTable() {
@@ -176,6 +180,11 @@ public int getSourceLine(final int pos) {
return lineNumberTable[minIndex].getLineNumber();
}
+ /**
+ * Gets the length of the line number table.
+ *
+ * @return the length of the line number table.
+ */
public int getTableLength() {
return lineNumberTable.length;
}
@@ -186,6 +195,8 @@ public Iterator iterator() {
}
/**
+ * Sets the line number table.
+ *
* @param lineNumberTable the line number entries for this table.
*/
public void setLineNumberTable(final LineNumber[] lineNumberTable) {
diff --git a/src/main/java/org/apache/bcel/classfile/LocalVariableTable.java b/src/main/java/org/apache/bcel/classfile/LocalVariableTable.java
index 4254fa170a..2fec2a8a16 100644
--- a/src/main/java/org/apache/bcel/classfile/LocalVariableTable.java
+++ b/src/main/java/org/apache/bcel/classfile/LocalVariableTable.java
@@ -60,6 +60,8 @@ public class LocalVariableTable extends Attribute implements Iterable iterator() {
return Stream.of(localVariableTable).iterator();
}
+ /**
+ * Sets the local variable table.
+ *
+ * @param localVariableTable the local variable table to set.
+ */
public final void setLocalVariableTable(final LocalVariable[] localVariableTable) {
this.localVariableTable = localVariableTable != null ? localVariableTable : EMPTY_ARRAY;
}
diff --git a/src/main/java/org/apache/bcel/classfile/LocalVariableTypeTable.java b/src/main/java/org/apache/bcel/classfile/LocalVariableTypeTable.java
index 87bf9edb1a..5365051713 100644
--- a/src/main/java/org/apache/bcel/classfile/LocalVariableTypeTable.java
+++ b/src/main/java/org/apache/bcel/classfile/LocalVariableTypeTable.java
@@ -77,12 +77,25 @@ public class LocalVariableTypeTable extends Attribute implements Iterable iterator() {
return Stream.of(localVariableTypeTable).iterator();
}
+ /**
+ * Sets the local variable table.
+ *
+ * @param localVariableTable the local variable table to set.
+ */
public final void setLocalVariableTable(final LocalVariable[] localVariableTable) {
this.localVariableTypeTable = localVariableTable != null ? localVariableTable : EMPTY_ARRAY;
}
diff --git a/src/main/java/org/apache/bcel/classfile/MethodParameters.java b/src/main/java/org/apache/bcel/classfile/MethodParameters.java
index fee2644e8c..607e13cb41 100644
--- a/src/main/java/org/apache/bcel/classfile/MethodParameters.java
+++ b/src/main/java/org/apache/bcel/classfile/MethodParameters.java
@@ -82,6 +82,11 @@ public void dump(final DataOutputStream file) throws IOException {
}
}
+ /**
+ * Gets the method parameters.
+ *
+ * @return the method parameters.
+ */
public MethodParameter[] getParameters() {
return parameters;
}
@@ -91,6 +96,11 @@ public Iterator iterator() {
return Stream.of(parameters).iterator();
}
+ /**
+ * Sets the method parameters.
+ *
+ * @param parameters the method parameters to set.
+ */
public void setParameters(final MethodParameter[] parameters) {
this.parameters = parameters != null ? parameters : EMPTY_ARRAY;
}
diff --git a/src/main/java/org/apache/bcel/classfile/Module.java b/src/main/java/org/apache/bcel/classfile/Module.java
index 0527850de5..bf4f76a1d0 100644
--- a/src/main/java/org/apache/bcel/classfile/Module.java
+++ b/src/main/java/org/apache/bcel/classfile/Module.java
@@ -180,6 +180,8 @@ public void dump(final DataOutputStream file) throws IOException {
}
/**
+ * Gets the table of exported interfaces.
+ *
* @return table of exported interfaces.
* @see ModuleExports
*/
@@ -209,6 +211,8 @@ public String getModuleName(final ConstantPool cp) {
}
/**
+ * Gets the table of open interfaces.
+ *
* @return table of provided interfaces.
* @see ModuleOpens
*/
@@ -217,6 +221,8 @@ public ModuleOpens[] getOpensTable() {
}
/**
+ * Gets the table of provided interfaces.
+ *
* @return table of provided interfaces.
* @see ModuleProvides
*/
@@ -225,6 +231,8 @@ public ModuleProvides[] getProvidesTable() {
}
/**
+ * Gets the table of required modules.
+ *
* @return table of required modules.
* @see ModuleRequires
*/
diff --git a/src/main/java/org/apache/bcel/classfile/ModuleExports.java b/src/main/java/org/apache/bcel/classfile/ModuleExports.java
index 4b6173c3b7..5dcde7c524 100644
--- a/src/main/java/org/apache/bcel/classfile/ModuleExports.java
+++ b/src/main/java/org/apache/bcel/classfile/ModuleExports.java
@@ -68,6 +68,8 @@ public void accept(final Visitor v) {
}
/**
+ * Creates a deep copy of this object.
+ *
* @return deep copy of this object.
*/
public ModuleExports copy() {
@@ -139,6 +141,9 @@ public String toString() {
}
/**
+ * Gets the resolved string representation.
+ *
+ * @param constantPool the constant pool.
* @return Resolved string representation.
*/
public String toString(final ConstantPool constantPool) {
diff --git a/src/main/java/org/apache/bcel/classfile/ModuleMainClass.java b/src/main/java/org/apache/bcel/classfile/ModuleMainClass.java
index fba24f16b2..91177a6930 100644
--- a/src/main/java/org/apache/bcel/classfile/ModuleMainClass.java
+++ b/src/main/java/org/apache/bcel/classfile/ModuleMainClass.java
@@ -51,6 +51,8 @@ public final class ModuleMainClass extends Attribute {
}
/**
+ * Constructs a new ModuleMainClass.
+ *
* @param nameIndex Index in constant pool.
* @param length Content length in bytes.
* @param mainClassIndex Host class index.
@@ -105,6 +107,8 @@ public void dump(final DataOutputStream file) throws IOException {
}
/**
+ * Gets the host class index.
+ *
* @return index into constant pool of host class name.
*/
public int getHostClassIndex() {
@@ -112,6 +116,8 @@ public int getHostClassIndex() {
}
/**
+ * Sets the host class index.
+ *
* @param mainClassIndex the host class index.
*/
public void setHostClassIndex(final int mainClassIndex) {
diff --git a/src/main/java/org/apache/bcel/classfile/ModuleOpens.java b/src/main/java/org/apache/bcel/classfile/ModuleOpens.java
index 24e4c77f18..57ce8b8aaa 100644
--- a/src/main/java/org/apache/bcel/classfile/ModuleOpens.java
+++ b/src/main/java/org/apache/bcel/classfile/ModuleOpens.java
@@ -68,6 +68,8 @@ public void accept(final Visitor v) {
}
/**
+ * Creates a deep copy of this object.
+ *
* @return deep copy of this object.
*/
public ModuleOpens copy() {
@@ -139,6 +141,9 @@ public String toString() {
}
/**
+ * Gets the resolved string representation.
+ *
+ * @param constantPool the constant pool.
* @return Resolved string representation.
*/
public String toString(final ConstantPool constantPool) {
diff --git a/src/main/java/org/apache/bcel/classfile/ModulePackages.java b/src/main/java/org/apache/bcel/classfile/ModulePackages.java
index 46ac6e75a9..1fea7f2596 100644
--- a/src/main/java/org/apache/bcel/classfile/ModulePackages.java
+++ b/src/main/java/org/apache/bcel/classfile/ModulePackages.java
@@ -53,6 +53,8 @@ public final class ModulePackages extends Attribute {
}
/**
+ * Constructs a new ModulePackages.
+ *
* @param nameIndex Index in constant pool.
* @param length Content length in bytes.
* @param packageIndexTable Table of indices in constant pool.
@@ -114,6 +116,8 @@ public void dump(final DataOutputStream file) throws IOException {
}
/**
+ * Gets the number of packages.
+ *
* @return Length of package table.
*/
public int getNumberOfPackages() {
@@ -121,6 +125,8 @@ public int getNumberOfPackages() {
}
/**
+ * Gets the package index table.
+ *
* @return array of indices into constant pool of package names.
*/
public int[] getPackageIndexTable() {
@@ -128,6 +134,8 @@ public int[] getPackageIndexTable() {
}
/**
+ * Gets the package names.
+ *
* @return string array of package names.
*/
public String[] getPackageNames() {
@@ -137,6 +145,8 @@ public String[] getPackageNames() {
}
/**
+ * Sets the package index table.
+ *
* @param packageIndexTable the list of package indexes Also redefines number_of_packages according to table length.
*/
public void setPackageIndexTable(final int[] packageIndexTable) {
diff --git a/src/main/java/org/apache/bcel/classfile/ModuleProvides.java b/src/main/java/org/apache/bcel/classfile/ModuleProvides.java
index 1fa1f5b88b..deb7793ee0 100644
--- a/src/main/java/org/apache/bcel/classfile/ModuleProvides.java
+++ b/src/main/java/org/apache/bcel/classfile/ModuleProvides.java
@@ -70,6 +70,8 @@ public void accept(final Visitor v) {
}
/**
+ * Creates a deep copy of this object.
+ *
* @return deep copy of this object.
*/
public ModuleProvides copy() {
@@ -131,6 +133,9 @@ public String toString() {
}
/**
+ * Gets the resolved string representation.
+ *
+ * @param constantPool the constant pool.
* @return Resolved string representation.
*/
public String toString(final ConstantPool constantPool) {
diff --git a/src/main/java/org/apache/bcel/classfile/ModuleRequires.java b/src/main/java/org/apache/bcel/classfile/ModuleRequires.java
index f512186acd..8a091c63f5 100644
--- a/src/main/java/org/apache/bcel/classfile/ModuleRequires.java
+++ b/src/main/java/org/apache/bcel/classfile/ModuleRequires.java
@@ -62,6 +62,8 @@ public void accept(final Visitor v) {
}
/**
+ * Creates a deep copy of this object.
+ *
* @return deep copy of this object.
*/
public ModuleRequires copy() {
@@ -126,6 +128,9 @@ public String toString() {
}
/**
+ * Gets the resolved string representation.
+ *
+ * @param constantPool the constant pool.
* @return Resolved string representation.
*/
public String toString(final ConstantPool constantPool) {
diff --git a/src/main/java/org/apache/bcel/generic/INVOKEDYNAMIC.java b/src/main/java/org/apache/bcel/generic/INVOKEDYNAMIC.java
index 685215797b..3028ccc6a0 100644
--- a/src/main/java/org/apache/bcel/generic/INVOKEDYNAMIC.java
+++ b/src/main/java/org/apache/bcel/generic/INVOKEDYNAMIC.java
@@ -44,6 +44,11 @@ public class INVOKEDYNAMIC extends InvokeInstruction {
INVOKEDYNAMIC() {
}
+ /**
+ * Constructs an INVOKEDYNAMIC instruction.
+ *
+ * @param index index into constant pool.
+ */
public INVOKEDYNAMIC(final int index) {
super(Const.INVOKEDYNAMIC, index);
}
diff --git a/src/main/java/org/apache/bcel/generic/INVOKEINTERFACE.java b/src/main/java/org/apache/bcel/generic/INVOKEINTERFACE.java
index b52e5ae7eb..650af62796 100644
--- a/src/main/java/org/apache/bcel/generic/INVOKEINTERFACE.java
+++ b/src/main/java/org/apache/bcel/generic/INVOKEINTERFACE.java
@@ -46,6 +46,12 @@ public final class INVOKEINTERFACE extends InvokeInstruction {
INVOKEINTERFACE() {
}
+ /**
+ * Constructs an INVOKEINTERFACE instruction.
+ *
+ * @param index index into constant pool.
+ * @param nargs number of arguments.
+ */
public INVOKEINTERFACE(final int index, final int nargs) {
super(Const.INVOKEINTERFACE, index);
super.setLength(5);
@@ -94,6 +100,8 @@ public void dump(final DataOutputStream out) throws IOException {
/**
* The count argument according to the Java Language Specification, Second Edition.
+ *
+ * @return the count argument.
*/
public int getCount() {
return nargs;
diff --git a/src/main/java/org/apache/bcel/generic/INVOKESPECIAL.java b/src/main/java/org/apache/bcel/generic/INVOKESPECIAL.java
index dc5ac11610..d1b5e91959 100644
--- a/src/main/java/org/apache/bcel/generic/INVOKESPECIAL.java
+++ b/src/main/java/org/apache/bcel/generic/INVOKESPECIAL.java
@@ -43,6 +43,11 @@ public class INVOKESPECIAL extends InvokeInstruction {
INVOKESPECIAL() {
}
+ /**
+ * Constructs an INVOKESPECIAL instruction.
+ *
+ * @param index index into constant pool.
+ */
public INVOKESPECIAL(final int index) {
super(Const.INVOKESPECIAL, index);
}
diff --git a/src/main/java/org/apache/bcel/generic/INVOKESTATIC.java b/src/main/java/org/apache/bcel/generic/INVOKESTATIC.java
index 1a80307506..11522741ec 100644
--- a/src/main/java/org/apache/bcel/generic/INVOKESTATIC.java
+++ b/src/main/java/org/apache/bcel/generic/INVOKESTATIC.java
@@ -42,6 +42,11 @@ public class INVOKESTATIC extends InvokeInstruction {
INVOKESTATIC() {
}
+ /**
+ * Constructs an INVOKESTATIC instruction.
+ *
+ * @param index index into constant pool.
+ */
public INVOKESTATIC(final int index) {
super(Const.INVOKESTATIC, index);
}
diff --git a/src/main/java/org/apache/bcel/generic/INVOKEVIRTUAL.java b/src/main/java/org/apache/bcel/generic/INVOKEVIRTUAL.java
index 2cfb392518..95e23aadd5 100644
--- a/src/main/java/org/apache/bcel/generic/INVOKEVIRTUAL.java
+++ b/src/main/java/org/apache/bcel/generic/INVOKEVIRTUAL.java
@@ -42,6 +42,11 @@ public class INVOKEVIRTUAL extends InvokeInstruction {
INVOKEVIRTUAL() {
}
+ /**
+ * Constructs an INVOKEVIRTUAL instruction.
+ *
+ * @param index index into constant pool.
+ */
public INVOKEVIRTUAL(final int index) {
super(Const.INVOKEVIRTUAL, index);
}
diff --git a/src/main/java/org/apache/bcel/generic/IOR.java b/src/main/java/org/apache/bcel/generic/IOR.java
index 8ab7c818af..f9897b9a94 100644
--- a/src/main/java/org/apache/bcel/generic/IOR.java
+++ b/src/main/java/org/apache/bcel/generic/IOR.java
@@ -27,6 +27,9 @@
*/
public class IOR extends ArithmeticInstruction {
+ /**
+ * Constructs an IOR instruction.
+ */
public IOR() {
super(org.apache.bcel.Const.IOR);
}
diff --git a/src/main/java/org/apache/bcel/generic/ISHL.java b/src/main/java/org/apache/bcel/generic/ISHL.java
index 6fd07eddea..b051b7e2a7 100644
--- a/src/main/java/org/apache/bcel/generic/ISHL.java
+++ b/src/main/java/org/apache/bcel/generic/ISHL.java
@@ -27,6 +27,9 @@
*/
public class ISHL extends ArithmeticInstruction {
+ /**
+ * Constructs an ISHL instruction.
+ */
public ISHL() {
super(org.apache.bcel.Const.ISHL);
}
diff --git a/src/main/java/org/apache/bcel/generic/ISHR.java b/src/main/java/org/apache/bcel/generic/ISHR.java
index 5134b88588..102448a16c 100644
--- a/src/main/java/org/apache/bcel/generic/ISHR.java
+++ b/src/main/java/org/apache/bcel/generic/ISHR.java
@@ -27,6 +27,9 @@
*/
public class ISHR extends ArithmeticInstruction {
+ /**
+ * Constructs an ISHR instruction.
+ */
public ISHR() {
super(org.apache.bcel.Const.ISHR);
}
diff --git a/src/main/java/org/apache/bcel/generic/IUSHR.java b/src/main/java/org/apache/bcel/generic/IUSHR.java
index 8645cd23ec..04ab9528b5 100644
--- a/src/main/java/org/apache/bcel/generic/IUSHR.java
+++ b/src/main/java/org/apache/bcel/generic/IUSHR.java
@@ -27,6 +27,9 @@
*/
public class IUSHR extends ArithmeticInstruction {
+ /**
+ * Constructs an IUSHR instruction.
+ */
public IUSHR() {
super(org.apache.bcel.Const.IUSHR);
}
diff --git a/src/main/java/org/apache/bcel/generic/IXOR.java b/src/main/java/org/apache/bcel/generic/IXOR.java
index 5cdcd9ba2e..0b64b22652 100644
--- a/src/main/java/org/apache/bcel/generic/IXOR.java
+++ b/src/main/java/org/apache/bcel/generic/IXOR.java
@@ -27,6 +27,9 @@
*/
public class IXOR extends ArithmeticInstruction {
+ /**
+ * Constructs an IXOR instruction.
+ */
public IXOR() {
super(org.apache.bcel.Const.IXOR);
}
diff --git a/src/main/java/org/apache/bcel/generic/InstructionFactory.java b/src/main/java/org/apache/bcel/generic/InstructionFactory.java
index a5ed959830..37fc677cd6 100644
--- a/src/main/java/org/apache/bcel/generic/InstructionFactory.java
+++ b/src/main/java/org/apache/bcel/generic/InstructionFactory.java
@@ -631,10 +631,11 @@ public Instruction createConstant(final Object value) {
/**
* Create a field instruction.
*
- * @param className name of the accessed class.
+ * @param className class name containing the field.
* @param name name of the referenced field.
* @param type type of field.
* @param kind how to access, that is, GETFIELD, PUTFIELD, GETSTATIC, PUTSTATIC.
+ * @return a field instruction.
* @see Const
*/
public FieldInstruction createFieldAccess(final String className, final String name, final Type type, final short kind) {
diff --git a/src/main/java/org/apache/bcel/generic/InstructionList.java b/src/main/java/org/apache/bcel/generic/InstructionList.java
index 96aef77a2b..2e3b23a1cc 100644
--- a/src/main/java/org/apache/bcel/generic/InstructionList.java
+++ b/src/main/java/org/apache/bcel/generic/InstructionList.java
@@ -846,6 +846,8 @@ public InstructionHandle insert(final InstructionList il) {
/**
* Tests for empty list.
+ *
+ * @return true if list is empty, false otherwise.
*/
public boolean isEmpty() {
return start == null;
diff --git a/src/main/java/org/apache/bcel/generic/JSR.java b/src/main/java/org/apache/bcel/generic/JSR.java
index ba8d946d5f..b49b4cf1ab 100644
--- a/src/main/java/org/apache/bcel/generic/JSR.java
+++ b/src/main/java/org/apache/bcel/generic/JSR.java
@@ -32,6 +32,11 @@ public class JSR extends JsrInstruction implements VariableLengthInstruction {
JSR() {
}
+ /**
+ * Constructs a JSR instruction.
+ *
+ * @param target branch target.
+ */
public JSR(final InstructionHandle target) {
super(org.apache.bcel.Const.JSR, target);
}
diff --git a/src/main/java/org/apache/bcel/generic/JSR_W.java b/src/main/java/org/apache/bcel/generic/JSR_W.java
index 3acd78655a..fa2193a657 100644
--- a/src/main/java/org/apache/bcel/generic/JSR_W.java
+++ b/src/main/java/org/apache/bcel/generic/JSR_W.java
@@ -34,6 +34,11 @@ public class JSR_W extends JsrInstruction {
JSR_W() {
}
+ /**
+ * Constructs a JSR_W instruction.
+ *
+ * @param target branch target.
+ */
public JSR_W(final InstructionHandle target) {
super(org.apache.bcel.Const.JSR_W, target);
super.setLength(5);
diff --git a/src/main/java/org/apache/bcel/generic/L2D.java b/src/main/java/org/apache/bcel/generic/L2D.java
index 93ec038de3..0a8ba3f8f6 100644
--- a/src/main/java/org/apache/bcel/generic/L2D.java
+++ b/src/main/java/org/apache/bcel/generic/L2D.java
@@ -27,6 +27,9 @@
*/
public class L2D extends ConversionInstruction {
+ /**
+ * Constructs an L2D instruction.
+ */
public L2D() {
super(org.apache.bcel.Const.L2D);
}
diff --git a/src/main/java/org/apache/bcel/generic/L2F.java b/src/main/java/org/apache/bcel/generic/L2F.java
index 95beb64021..7608d3d1e7 100644
--- a/src/main/java/org/apache/bcel/generic/L2F.java
+++ b/src/main/java/org/apache/bcel/generic/L2F.java
@@ -27,6 +27,9 @@
*/
public class L2F extends ConversionInstruction {
+ /**
+ * Constructs an L2F instruction.
+ */
public L2F() {
super(org.apache.bcel.Const.L2F);
}
diff --git a/src/main/java/org/apache/bcel/generic/L2I.java b/src/main/java/org/apache/bcel/generic/L2I.java
index fa14c8e43c..95fcc88241 100644
--- a/src/main/java/org/apache/bcel/generic/L2I.java
+++ b/src/main/java/org/apache/bcel/generic/L2I.java
@@ -27,6 +27,9 @@
*/
public class L2I extends ConversionInstruction {
+ /**
+ * Constructs an L2I instruction.
+ */
public L2I() {
super(org.apache.bcel.Const.L2I);
}
diff --git a/src/main/java/org/apache/bcel/generic/LADD.java b/src/main/java/org/apache/bcel/generic/LADD.java
index 251587ba1d..3d0c6b8c5a 100644
--- a/src/main/java/org/apache/bcel/generic/LADD.java
+++ b/src/main/java/org/apache/bcel/generic/LADD.java
@@ -29,6 +29,9 @@
*/
public class LADD extends ArithmeticInstruction {
+ /**
+ * Constructs an LADD instruction.
+ */
public LADD() {
super(org.apache.bcel.Const.LADD);
}
diff --git a/src/main/java/org/apache/bcel/generic/LAND.java b/src/main/java/org/apache/bcel/generic/LAND.java
index dfa54e4a37..375e6bcb4f 100644
--- a/src/main/java/org/apache/bcel/generic/LAND.java
+++ b/src/main/java/org/apache/bcel/generic/LAND.java
@@ -29,6 +29,9 @@
*/
public class LAND extends ArithmeticInstruction {
+ /**
+ * Constructs an LAND instruction.
+ */
public LAND() {
super(org.apache.bcel.Const.LAND);
}
diff --git a/src/main/java/org/apache/bcel/generic/LCMP.java b/src/main/java/org/apache/bcel/generic/LCMP.java
index faecd83fb5..1768d2ae40 100644
--- a/src/main/java/org/apache/bcel/generic/LCMP.java
+++ b/src/main/java/org/apache/bcel/generic/LCMP.java
@@ -27,6 +27,9 @@
*/
public class LCMP extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
+ /**
+ * Constructs an LCMP instruction.
+ */
public LCMP() {
super(org.apache.bcel.Const.LCMP, (short) 1);
}
diff --git a/src/main/java/org/apache/bcel/generic/LCONST.java b/src/main/java/org/apache/bcel/generic/LCONST.java
index 4ed4b21fca..875379038e 100644
--- a/src/main/java/org/apache/bcel/generic/LCONST.java
+++ b/src/main/java/org/apache/bcel/generic/LCONST.java
@@ -36,6 +36,11 @@ public class LCONST extends Instruction implements ConstantPushInstruction {
this(0);
}
+ /**
+ * Constructs an LCONST instruction.
+ *
+ * @param l long constant value.
+ */
public LCONST(final long l) {
super(org.apache.bcel.Const.LCONST_0, (short) 1);
if (l == 0) {
diff --git a/src/main/java/org/apache/bcel/generic/LDC.java b/src/main/java/org/apache/bcel/generic/LDC.java
index a46c6dc0b5..d84b480870 100644
--- a/src/main/java/org/apache/bcel/generic/LDC.java
+++ b/src/main/java/org/apache/bcel/generic/LDC.java
@@ -39,6 +39,11 @@ public class LDC extends CPInstruction implements PushInstruction, ExceptionThro
LDC() {
}
+ /**
+ * Constructs an LDC instruction.
+ *
+ * @param index index into constant pool.
+ */
public LDC(final int index) {
super(org.apache.bcel.Const.LDC_W, index);
setSize();
@@ -98,6 +103,12 @@ public Type getType(final ConstantPoolGen cpg) {
}
}
+ /**
+ * Gets the constant value from the constant pool.
+ *
+ * @param cpg constant pool generator.
+ * @return the constant value.
+ */
public Object getValue(final ConstantPoolGen cpg) {
org.apache.bcel.classfile.Constant c = cpg.getConstantPool().getConstant(super.getIndex());
switch (c.getTag()) {
@@ -139,7 +150,9 @@ public final void setIndex(final int index) {
setSize();
}
- // Adjust to proper size
+ /**
+ * Adjusts to proper size.
+ */
protected final void setSize() {
if (super.getIndex() <= org.apache.bcel.Const.MAX_BYTE) { // Fits in one byte?
super.setOpcode(org.apache.bcel.Const.LDC);
diff --git a/src/main/java/org/apache/bcel/generic/LDC2_W.java b/src/main/java/org/apache/bcel/generic/LDC2_W.java
index 61cba67542..ec7193d938 100644
--- a/src/main/java/org/apache/bcel/generic/LDC2_W.java
+++ b/src/main/java/org/apache/bcel/generic/LDC2_W.java
@@ -33,6 +33,11 @@ public class LDC2_W extends CPInstruction implements PushInstruction {
LDC2_W() {
}
+ /**
+ * Constructs an LDC2_W instruction.
+ *
+ * @param index index into constant pool.
+ */
public LDC2_W(final int index) {
super(org.apache.bcel.Const.LDC2_W, index);
}
@@ -64,6 +69,12 @@ public Type getType(final ConstantPoolGen cpg) {
}
}
+ /**
+ * Gets the constant value from the constant pool.
+ *
+ * @param cpg constant pool generator.
+ * @return the constant value as a Number.
+ */
public Number getValue(final ConstantPoolGen cpg) {
final org.apache.bcel.classfile.Constant c = cpg.getConstantPool().getConstant(super.getIndex());
switch (c.getTag()) {
diff --git a/src/main/java/org/apache/bcel/generic/LDC_W.java b/src/main/java/org/apache/bcel/generic/LDC_W.java
index 3be17d25b3..52600ae79f 100644
--- a/src/main/java/org/apache/bcel/generic/LDC_W.java
+++ b/src/main/java/org/apache/bcel/generic/LDC_W.java
@@ -37,6 +37,11 @@ public class LDC_W extends LDC {
LDC_W() {
}
+ /**
+ * Constructs an LDC_W instruction.
+ *
+ * @param index index into constant pool.
+ */
public LDC_W(final int index) {
super(index);
}
diff --git a/src/main/java/org/apache/bcel/generic/LDIV.java b/src/main/java/org/apache/bcel/generic/LDIV.java
index 8bbb6b69cd..0f2653877e 100644
--- a/src/main/java/org/apache/bcel/generic/LDIV.java
+++ b/src/main/java/org/apache/bcel/generic/LDIV.java
@@ -31,6 +31,9 @@
*/
public class LDIV extends ArithmeticInstruction implements ExceptionThrower {
+ /**
+ * Constructs an LDIV instruction.
+ */
public LDIV() {
super(org.apache.bcel.Const.LDIV);
}
diff --git a/src/main/java/org/apache/bcel/generic/LLOAD.java b/src/main/java/org/apache/bcel/generic/LLOAD.java
index d6f7b05b91..7ca761b546 100644
--- a/src/main/java/org/apache/bcel/generic/LLOAD.java
+++ b/src/main/java/org/apache/bcel/generic/LLOAD.java
@@ -34,6 +34,11 @@ public class LLOAD extends LoadInstruction {
super(org.apache.bcel.Const.LLOAD, org.apache.bcel.Const.LLOAD_0);
}
+ /**
+ * Load long from local variable.
+ *
+ * @param n index of local variable.
+ */
public LLOAD(final int n) {
super(org.apache.bcel.Const.LLOAD, org.apache.bcel.Const.LLOAD_0, n);
}
diff --git a/src/main/java/org/apache/bcel/generic/LMUL.java b/src/main/java/org/apache/bcel/generic/LMUL.java
index 64c8e91ed0..d2245144a5 100644
--- a/src/main/java/org/apache/bcel/generic/LMUL.java
+++ b/src/main/java/org/apache/bcel/generic/LMUL.java
@@ -29,6 +29,9 @@
*/
public class LMUL extends ArithmeticInstruction {
+ /**
+ * Constructs an LMUL instruction.
+ */
public LMUL() {
super(org.apache.bcel.Const.LMUL);
}
diff --git a/src/main/java/org/apache/bcel/generic/LNEG.java b/src/main/java/org/apache/bcel/generic/LNEG.java
index 3073a1e0c7..5db072d9fe 100644
--- a/src/main/java/org/apache/bcel/generic/LNEG.java
+++ b/src/main/java/org/apache/bcel/generic/LNEG.java
@@ -27,6 +27,9 @@
*/
public class LNEG extends ArithmeticInstruction {
+ /**
+ * Constructs an LNEG instruction.
+ */
public LNEG() {
super(org.apache.bcel.Const.LNEG);
}
diff --git a/src/main/java/org/apache/bcel/generic/LOOKUPSWITCH.java b/src/main/java/org/apache/bcel/generic/LOOKUPSWITCH.java
index c9cffa6e25..dc1c831703 100644
--- a/src/main/java/org/apache/bcel/generic/LOOKUPSWITCH.java
+++ b/src/main/java/org/apache/bcel/generic/LOOKUPSWITCH.java
@@ -36,6 +36,13 @@ public class LOOKUPSWITCH extends Select {
LOOKUPSWITCH() {
}
+ /**
+ * Constructs a LOOKUPSWITCH instruction.
+ *
+ * @param match array of match values.
+ * @param targets array of branch targets.
+ * @param defaultTarget default branch target.
+ */
public LOOKUPSWITCH(final int[] match, final InstructionHandle[] targets, final InstructionHandle defaultTarget) {
super(org.apache.bcel.Const.LOOKUPSWITCH, match, targets, defaultTarget);
/* alignment remainder assumed 0 here, until dump time. */
diff --git a/src/main/java/org/apache/bcel/generic/LOR.java b/src/main/java/org/apache/bcel/generic/LOR.java
index d6d7ceb70a..a8cdfedde0 100644
--- a/src/main/java/org/apache/bcel/generic/LOR.java
+++ b/src/main/java/org/apache/bcel/generic/LOR.java
@@ -27,6 +27,9 @@
*/
public class LOR extends ArithmeticInstruction {
+ /**
+ * Constructs an LOR instruction.
+ */
public LOR() {
super(org.apache.bcel.Const.LOR);
}
diff --git a/src/main/java/org/apache/bcel/generic/LREM.java b/src/main/java/org/apache/bcel/generic/LREM.java
index f494358278..5ae87dcdff 100644
--- a/src/main/java/org/apache/bcel/generic/LREM.java
+++ b/src/main/java/org/apache/bcel/generic/LREM.java
@@ -29,6 +29,9 @@
*/
public class LREM extends ArithmeticInstruction implements ExceptionThrower {
+ /**
+ * Constructs an LREM instruction.
+ */
public LREM() {
super(org.apache.bcel.Const.LREM);
}
diff --git a/src/main/java/org/apache/bcel/generic/LRETURN.java b/src/main/java/org/apache/bcel/generic/LRETURN.java
index 51812db0bb..9a447e9f83 100644
--- a/src/main/java/org/apache/bcel/generic/LRETURN.java
+++ b/src/main/java/org/apache/bcel/generic/LRETURN.java
@@ -27,6 +27,9 @@
*/
public class LRETURN extends ReturnInstruction {
+ /**
+ * Constructs an LRETURN instruction.
+ */
public LRETURN() {
super(org.apache.bcel.Const.LRETURN);
}
diff --git a/src/main/java/org/apache/bcel/generic/LSHL.java b/src/main/java/org/apache/bcel/generic/LSHL.java
index 70437fedce..b7eb217771 100644
--- a/src/main/java/org/apache/bcel/generic/LSHL.java
+++ b/src/main/java/org/apache/bcel/generic/LSHL.java
@@ -27,6 +27,9 @@
*/
public class LSHL extends ArithmeticInstruction {
+ /**
+ * Constructs an LSHL instruction.
+ */
public LSHL() {
super(org.apache.bcel.Const.LSHL);
}
diff --git a/src/main/java/org/apache/bcel/generic/LSHR.java b/src/main/java/org/apache/bcel/generic/LSHR.java
index 61556b4594..00ee22f7fb 100644
--- a/src/main/java/org/apache/bcel/generic/LSHR.java
+++ b/src/main/java/org/apache/bcel/generic/LSHR.java
@@ -27,6 +27,9 @@
*/
public class LSHR extends ArithmeticInstruction {
+ /**
+ * Constructs an LSHR instruction.
+ */
public LSHR() {
super(org.apache.bcel.Const.LSHR);
}
diff --git a/src/main/java/org/apache/bcel/generic/LSTORE.java b/src/main/java/org/apache/bcel/generic/LSTORE.java
index 6a24784110..3fa4583a70 100644
--- a/src/main/java/org/apache/bcel/generic/LSTORE.java
+++ b/src/main/java/org/apache/bcel/generic/LSTORE.java
@@ -34,6 +34,11 @@ public class LSTORE extends StoreInstruction {
super(org.apache.bcel.Const.LSTORE, org.apache.bcel.Const.LSTORE_0);
}
+ /**
+ * Store long into local variable.
+ *
+ * @param n index of local variable.
+ */
public LSTORE(final int n) {
super(org.apache.bcel.Const.LSTORE, org.apache.bcel.Const.LSTORE_0, n);
}
diff --git a/src/main/java/org/apache/bcel/generic/LSUB.java b/src/main/java/org/apache/bcel/generic/LSUB.java
index a108d5b8d7..8edecde170 100644
--- a/src/main/java/org/apache/bcel/generic/LSUB.java
+++ b/src/main/java/org/apache/bcel/generic/LSUB.java
@@ -29,6 +29,9 @@
*/
public class LSUB extends ArithmeticInstruction {
+ /**
+ * Constructs an LSUB instruction.
+ */
public LSUB() {
super(org.apache.bcel.Const.LSUB);
}
diff --git a/src/main/java/org/apache/bcel/generic/LUSHR.java b/src/main/java/org/apache/bcel/generic/LUSHR.java
index 8574cc5bde..daa56d70a3 100644
--- a/src/main/java/org/apache/bcel/generic/LUSHR.java
+++ b/src/main/java/org/apache/bcel/generic/LUSHR.java
@@ -27,6 +27,9 @@
*/
public class LUSHR extends ArithmeticInstruction {
+ /**
+ * Constructs an LUSHR instruction.
+ */
public LUSHR() {
super(org.apache.bcel.Const.LUSHR);
}
diff --git a/src/main/java/org/apache/bcel/generic/LXOR.java b/src/main/java/org/apache/bcel/generic/LXOR.java
index 820e01a213..928ac48fca 100644
--- a/src/main/java/org/apache/bcel/generic/LXOR.java
+++ b/src/main/java/org/apache/bcel/generic/LXOR.java
@@ -27,6 +27,9 @@
*/
public class LXOR extends ArithmeticInstruction {
+ /**
+ * Constructs an LXOR instruction.
+ */
public LXOR() {
super(org.apache.bcel.Const.LXOR);
}
diff --git a/src/main/java/org/apache/bcel/generic/LineNumberGen.java b/src/main/java/org/apache/bcel/generic/LineNumberGen.java
index c644d42459..76e6e3eda5 100644
--- a/src/main/java/org/apache/bcel/generic/LineNumberGen.java
+++ b/src/main/java/org/apache/bcel/generic/LineNumberGen.java
@@ -40,6 +40,7 @@ public class LineNumberGen implements InstructionTargeter, Cloneable {
* Create a line number.
*
* @param ih instruction handle to reference.
+ * @param srcLine source line number.
*/
public LineNumberGen(final InstructionHandle ih, final int srcLine) {
setInstruction(ih);
@@ -63,6 +64,11 @@ public boolean containsTarget(final InstructionHandle ih) {
return this.ih == ih;
}
+ /**
+ * Gets the instruction handle.
+ *
+ * @return the instruction handle.
+ */
public InstructionHandle getInstruction() {
return ih;
}
@@ -72,21 +78,38 @@ public InstructionHandle getInstruction() {
*
* This relies on that the instruction list has already been dumped to byte code or that the 'setPositions' methods
* has been called for the instruction list.
+ *
+ * @return the line number attribute.
*/
public LineNumber getLineNumber() {
return new LineNumber(ih.getPosition(), srcLine);
}
+ /**
+ * Gets the source line number.
+ *
+ * @return the source line number.
+ */
public int getSourceLine() {
return srcLine;
}
+ /**
+ * Sets the instruction handle.
+ *
+ * @param instructionHandle the instruction handle to set.
+ */
public void setInstruction(final InstructionHandle instructionHandle) { // TODO could be package-protected?
Objects.requireNonNull(instructionHandle, "instructionHandle");
BranchInstruction.notifyTarget(this.ih, instructionHandle, this);
this.ih = instructionHandle;
}
+ /**
+ * Sets the source line number.
+ *
+ * @param srcLine the source line number to set.
+ */
public void setSourceLine(final int srcLine) { // TODO could be package-protected?
this.srcLine = srcLine;
}
diff --git a/src/main/java/org/apache/bcel/generic/MONITORENTER.java b/src/main/java/org/apache/bcel/generic/MONITORENTER.java
index 9df98a61c7..78ab9453b4 100644
--- a/src/main/java/org/apache/bcel/generic/MONITORENTER.java
+++ b/src/main/java/org/apache/bcel/generic/MONITORENTER.java
@@ -29,6 +29,9 @@
*/
public class MONITORENTER extends Instruction implements ExceptionThrower, StackConsumer {
+ /**
+ * Constructs a MONITORENTER instruction.
+ */
public MONITORENTER() {
super(org.apache.bcel.Const.MONITORENTER, (short) 1);
}
diff --git a/src/main/java/org/apache/bcel/generic/MONITOREXIT.java b/src/main/java/org/apache/bcel/generic/MONITOREXIT.java
index fe92e8030c..232cd57a70 100644
--- a/src/main/java/org/apache/bcel/generic/MONITOREXIT.java
+++ b/src/main/java/org/apache/bcel/generic/MONITOREXIT.java
@@ -29,6 +29,9 @@
*/
public class MONITOREXIT extends Instruction implements ExceptionThrower, StackConsumer {
+ /**
+ * Constructs a MONITOREXIT instruction.
+ */
public MONITOREXIT() {
super(org.apache.bcel.Const.MONITOREXIT, (short) 1);
}
diff --git a/src/main/java/org/apache/bcel/generic/MethodObserver.java b/src/main/java/org/apache/bcel/generic/MethodObserver.java
index edd2a52039..c339bbae8e 100644
--- a/src/main/java/org/apache/bcel/generic/MethodObserver.java
+++ b/src/main/java/org/apache/bcel/generic/MethodObserver.java
@@ -24,5 +24,10 @@
*/
public interface MethodObserver {
+ /**
+ * Notifies this observer of a change to the method.
+ *
+ * @param method the method that changed.
+ */
void notify(MethodGen method);
}
diff --git a/src/main/java/org/apache/bcel/generic/Select.java b/src/main/java/org/apache/bcel/generic/Select.java
index 8b0dc3e101..5aaf7bb39b 100644
--- a/src/main/java/org/apache/bcel/generic/Select.java
+++ b/src/main/java/org/apache/bcel/generic/Select.java
@@ -160,6 +160,8 @@ final int getFixedLength() {
}
/**
+ * Gets the match target offsets.
+ *
* @return array of match target offsets.
*/
public int[] getIndices() {
@@ -191,6 +193,8 @@ final int getMatchLength() {
}
/**
+ * Gets the match indices.
+ *
* @return array of match indices.
*/
public int[] getMatchs() {
@@ -215,6 +219,8 @@ final InstructionHandle getTarget(final int index) {
}
/**
+ * Gets the match targets.
+ *
* @return array of match targets.
*/
public InstructionHandle[] getTargets() {
@@ -286,7 +292,10 @@ final int setMatchLength(final int matchLength) {
}
/**
- * Sets branch target for 'i'th case
+ * Sets branch target for 'i'th case.
+ *
+ * @param i the case index.
+ * @param target the branch target.
*/
public void setTarget(final int i, final InstructionHandle target) { // TODO could be package-protected?
notifyTarget(targets[i], target, this);
diff --git a/src/main/java/org/apache/bcel/util/JavaWrapper.java b/src/main/java/org/apache/bcel/util/JavaWrapper.java
index 2e7cbb2b19..ad56ecf1b1 100644
--- a/src/main/java/org/apache/bcel/util/JavaWrapper.java
+++ b/src/main/java/org/apache/bcel/util/JavaWrapper.java
@@ -59,6 +59,9 @@ private static java.lang.ClassLoader getClassLoader() {
/**
* Default main method used as wrapper, expects the fully qualified class name of the real class as the first argument.
+ *
+ * @param argv command line arguments where first argument is the class name.
+ * @throws Exception if an error occurs during execution.
*/
public static void main(final String[] argv) throws Exception {
/*
@@ -76,10 +79,18 @@ public static void main(final String[] argv) throws Exception {
private final java.lang.ClassLoader loader;
+ /**
+ * Constructs a JavaWrapper with the default class loader.
+ */
public JavaWrapper() {
this(getClassLoader());
}
+ /**
+ * Constructs a JavaWrapper with the specified class loader.
+ *
+ * @param loader the class loader to use.
+ */
public JavaWrapper(final java.lang.ClassLoader loader) {
this.loader = loader;
}
diff --git a/src/main/java/org/apache/bcel/util/LruCacheClassPathRepository.java b/src/main/java/org/apache/bcel/util/LruCacheClassPathRepository.java
index 9074925b3f..beb3ce0629 100644
--- a/src/main/java/org/apache/bcel/util/LruCacheClassPathRepository.java
+++ b/src/main/java/org/apache/bcel/util/LruCacheClassPathRepository.java
@@ -37,6 +37,12 @@ public class LruCacheClassPathRepository extends AbstractClassPathRepository {
private final LinkedHashMap loadedClasses;
+ /**
+ * Constructs a new LruCacheClassPathRepository.
+ *
+ * @param path the class path.
+ * @param cacheSize the cache size.
+ */
public LruCacheClassPathRepository(final ClassPath path, final int cacheSize) {
super(path);
diff --git a/src/main/java/org/apache/bcel/util/MemorySensitiveClassPathRepository.java b/src/main/java/org/apache/bcel/util/MemorySensitiveClassPathRepository.java
index 56f3539c25..1c830b00dc 100644
--- a/src/main/java/org/apache/bcel/util/MemorySensitiveClassPathRepository.java
+++ b/src/main/java/org/apache/bcel/util/MemorySensitiveClassPathRepository.java
@@ -36,6 +36,11 @@ public class MemorySensitiveClassPathRepository extends AbstractClassPathReposit
private final Map> loadedClasses = new HashMap<>(); // CLASSNAME X JAVACLASS
+ /**
+ * Constructs a new MemorySensitiveClassPathRepository.
+ *
+ * @param path the class path.
+ */
public MemorySensitiveClassPathRepository(final ClassPath path) {
super(path);
}
diff --git a/src/main/java/org/apache/bcel/util/ModularRuntimeImage.java b/src/main/java/org/apache/bcel/util/ModularRuntimeImage.java
index 0dd666e9e8..612c3fa640 100644
--- a/src/main/java/org/apache/bcel/util/ModularRuntimeImage.java
+++ b/src/main/java/org/apache/bcel/util/ModularRuntimeImage.java
@@ -89,6 +89,11 @@ public void close() throws IOException {
}
}
+ /**
+ * Gets the file system.
+ *
+ * @return the file system.
+ */
public FileSystem getFileSystem() {
return fileSystem;
}
diff --git a/src/main/java/org/apache/bcel/verifier/exc/InvalidMethodException.java b/src/main/java/org/apache/bcel/verifier/exc/InvalidMethodException.java
index 1bd91126de..917de76d40 100644
--- a/src/main/java/org/apache/bcel/verifier/exc/InvalidMethodException.java
+++ b/src/main/java/org/apache/bcel/verifier/exc/InvalidMethodException.java
@@ -26,7 +26,11 @@ public class InvalidMethodException extends RuntimeException {
private static final long serialVersionUID = -7060302743724808051L;
- /** Constructs an InvalidMethodException with the specified detail message. */
+ /**
+ * Constructs an InvalidMethodException with the specified detail message.
+ *
+ * @param message the detail message.
+ */
public InvalidMethodException(final String message) {
super(message);
}
diff --git a/src/main/java/org/apache/bcel/verifier/exc/LinkingConstraintException.java b/src/main/java/org/apache/bcel/verifier/exc/LinkingConstraintException.java
index 66fecdf2ab..8818e97103 100644
--- a/src/main/java/org/apache/bcel/verifier/exc/LinkingConstraintException.java
+++ b/src/main/java/org/apache/bcel/verifier/exc/LinkingConstraintException.java
@@ -31,4 +31,10 @@
public class LinkingConstraintException extends StructuralCodeConstraintException {
private static final long serialVersionUID = -5239226345026321126L;
+
+ /**
+ * Constructs a new LinkingConstraintException.
+ */
+ public LinkingConstraintException() {
+ }
}
diff --git a/src/main/java/org/apache/bcel/verifier/exc/LoadingException.java b/src/main/java/org/apache/bcel/verifier/exc/LoadingException.java
index 1647df309f..0fd435c03d 100644
--- a/src/main/java/org/apache/bcel/verifier/exc/LoadingException.java
+++ b/src/main/java/org/apache/bcel/verifier/exc/LoadingException.java
@@ -35,6 +35,8 @@ public LoadingException() {
/**
* Constructs a new LoadingException with the specified error message.
+ *
+ * @param message the error message.
*/
public LoadingException(final String message) {
super(message);
diff --git a/src/main/java/org/apache/bcel/verifier/exc/LocalVariableInfoInconsistentException.java b/src/main/java/org/apache/bcel/verifier/exc/LocalVariableInfoInconsistentException.java
index 2e1c38a1cc..6567b01b86 100644
--- a/src/main/java/org/apache/bcel/verifier/exc/LocalVariableInfoInconsistentException.java
+++ b/src/main/java/org/apache/bcel/verifier/exc/LocalVariableInfoInconsistentException.java
@@ -34,6 +34,8 @@ public LocalVariableInfoInconsistentException() {
/**
* Constructs a new LocalVariableInfoInconsistentException with the specified error message.
+ *
+ * @param message the error message.
*/
public LocalVariableInfoInconsistentException(final String message) {
super(message);
diff --git a/src/main/java/org/apache/bcel/verifier/exc/StructuralCodeConstraintException.java b/src/main/java/org/apache/bcel/verifier/exc/StructuralCodeConstraintException.java
index b508ecba7a..8f5e089a85 100644
--- a/src/main/java/org/apache/bcel/verifier/exc/StructuralCodeConstraintException.java
+++ b/src/main/java/org/apache/bcel/verifier/exc/StructuralCodeConstraintException.java
@@ -37,6 +37,8 @@ public StructuralCodeConstraintException() {
/**
* Constructs a new StructuralCodeConstraintException with the specified error message.
+ *
+ * @param message the error message.
*/
public StructuralCodeConstraintException(final String message) {
super(message);
diff --git a/src/main/java/org/apache/bcel/verifier/statics/LocalVariableInfo.java b/src/main/java/org/apache/bcel/verifier/statics/LocalVariableInfo.java
index 6c02093627..b9cf33a1bf 100644
--- a/src/main/java/org/apache/bcel/verifier/statics/LocalVariableInfo.java
+++ b/src/main/java/org/apache/bcel/verifier/statics/LocalVariableInfo.java
@@ -35,6 +35,12 @@ public class LocalVariableInfo {
/** The names database. KEY: String representing the offset integer. */
private final Hashtable names = new Hashtable<>();
+ /**
+ * Constructs a new LocalVariableInfo.
+ */
+ public LocalVariableInfo() {
+ }
+
/**
* Adds information about name and type for a given offset.
*
From 725f7f3dc10829b0c046a074b5d60f979823af33 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Fri, 13 Feb 2026 17:41:19 -0500
Subject: [PATCH 24/83] Javadoc
---
src/main/java/org/apache/bcel/Repository.java | 98 +++++++++++++++----
.../org/apache/bcel/classfile/NestHost.java | 6 ++
.../apache/bcel/classfile/NestMembers.java | 10 ++
.../apache/bcel/generic/MULTIANEWARRAY.java | 8 ++
.../java/org/apache/bcel/generic/NEW.java | 5 +
.../org/apache/bcel/generic/NEWARRAY.java | 14 +++
.../java/org/apache/bcel/generic/NOP.java | 3 +
.../generic/NameSignatureInstruction.java | 21 ++++
.../java/org/apache/bcel/generic/POP.java | 3 +
.../java/org/apache/bcel/generic/POP2.java | 3 +
.../org/apache/bcel/generic/PUTFIELD.java | 5 +
.../org/apache/bcel/generic/PUTSTATIC.java | 5 +
.../java/org/apache/bcel/generic/RET.java | 5 +
.../java/org/apache/bcel/generic/RETURN.java | 3 +
.../java/org/apache/bcel/generic/SALOAD.java | 3 +
.../java/org/apache/bcel/generic/SASTORE.java | 3 +
.../apache/bcel/verifier/NativeVerifier.java | 2 +
17 files changed, 179 insertions(+), 18 deletions(-)
diff --git a/src/main/java/org/apache/bcel/Repository.java b/src/main/java/org/apache/bcel/Repository.java
index 7ef8af7c11..21a7ef1151 100644
--- a/src/main/java/org/apache/bcel/Repository.java
+++ b/src/main/java/org/apache/bcel/Repository.java
@@ -35,9 +35,16 @@ public abstract class Repository {
private static org.apache.bcel.util.Repository repository = SyntheticRepository.getInstance();
+ /**
+ * Constructs a new Repository.
+ */
+ public Repository() {
+ }
+
/**
* Adds clazz to repository if there isn't an equally named class already in there.
*
+ * @param clazz the class to add.
* @return old entry in repository.
*/
public static JavaClass addClass(final JavaClass clazz) {
@@ -54,25 +61,33 @@ public static void clearCache() {
}
/**
+ * Gets all interfaces implemented by the class.
+ *
+ * @param clazz the class.
* @return all interfaces implemented by class and its super classes and the interfaces that those interfaces extend,
* and so on. (Some people call this a transitive hull).
- * @throws ClassNotFoundException if any of the class's superclasses or superinterfaces can't be found
+ * @throws ClassNotFoundException if any of the class's superclasses or superinterfaces can't be found.
*/
public static JavaClass[] getInterfaces(final JavaClass clazz) throws ClassNotFoundException {
return clazz.getAllInterfaces();
}
/**
+ * Gets all interfaces implemented by the class.
+ *
+ * @param className the class name.
* @return all interfaces implemented by class and its super classes and the interfaces that extend those interfaces,
- * and so on
+ * and so on.
* @throws ClassNotFoundException if the named class can't be found, or if any of its superclasses or superinterfaces
- * can't be found
+ * can't be found.
*/
public static JavaClass[] getInterfaces(final String className) throws ClassNotFoundException {
return getInterfaces(lookupClass(className));
}
/**
+ * Gets the currently used repository instance.
+ *
* @return currently used repository instance.
*/
public static org.apache.bcel.util.Repository getRepository() {
@@ -80,48 +95,70 @@ public static org.apache.bcel.util.Repository getRepository() {
}
/**
+ * Gets the list of super classes.
+ *
+ * @param clazz the class.
* @return list of super classes of clazz in ascending order, that is, Object is always the last element.
- * @throws ClassNotFoundException if any of the superclasses can't be found
+ * @throws ClassNotFoundException if any of the superclasses can't be found.
*/
public static JavaClass[] getSuperClasses(final JavaClass clazz) throws ClassNotFoundException {
return clazz.getSuperClasses();
}
/**
+ * Gets the list of super classes.
+ *
+ * @param className the class name.
* @return list of super classes of clazz in ascending order, that is, Object is always the last element.
- * @throws ClassNotFoundException if the named class or any of its superclasses can't be found
+ * @throws ClassNotFoundException if the named class or any of its superclasses can't be found.
*/
public static JavaClass[] getSuperClasses(final String className) throws ClassNotFoundException {
return getSuperClasses(lookupClass(className));
}
/**
+ * Tests if clazz is an implementation of interface inter.
+ *
+ * @param clazz the class to test.
+ * @param inter the interface.
* @return true, if clazz is an implementation of interface inter.
- * @throws ClassNotFoundException if any superclasses or superinterfaces of clazz can't be found
+ * @throws ClassNotFoundException if any superclasses or superinterfaces of clazz can't be found.
*/
public static boolean implementationOf(final JavaClass clazz, final JavaClass inter) throws ClassNotFoundException {
return clazz.implementationOf(inter);
}
/**
+ * Tests if clazz is an implementation of interface inter.
+ *
+ * @param clazz the class to test.
+ * @param inter the interface name.
* @return true, if clazz is an implementation of interface inter.
- * @throws ClassNotFoundException if inter or any superclasses or superinterfaces of clazz can't be found
+ * @throws ClassNotFoundException if inter or any superclasses or superinterfaces of clazz can't be found.
*/
public static boolean implementationOf(final JavaClass clazz, final String inter) throws ClassNotFoundException {
return implementationOf(clazz, lookupClass(inter));
}
/**
+ * Tests if clazz is an implementation of interface inter.
+ *
+ * @param clazz the class name to test.
+ * @param inter the interface.
* @return true, if clazz is an implementation of interface inter.
- * @throws ClassNotFoundException if clazz or any superclasses or superinterfaces of clazz can't be found
+ * @throws ClassNotFoundException if clazz or any superclasses or superinterfaces of clazz can't be found.
*/
public static boolean implementationOf(final String clazz, final JavaClass inter) throws ClassNotFoundException {
return implementationOf(lookupClass(clazz), inter);
}
/**
+ * Tests if clazz is an implementation of interface inter.
+ *
+ * @param clazz the class name to test.
+ * @param inter the interface name.
* @return true, if clazz is an implementation of interface inter.
- * @throws ClassNotFoundException if clazz, inter, or any superclasses or superinterfaces of clazz can't be found
+ * @throws ClassNotFoundException if clazz, inter, or any superclasses or superinterfaces of clazz can't be found.
*/
public static boolean implementationOf(final String clazz, final String inter) throws ClassNotFoundException {
return implementationOf(lookupClass(clazz), lookupClass(inter));
@@ -130,32 +167,46 @@ public static boolean implementationOf(final String clazz, final String inter) t
/**
* Equivalent to runtime "instanceof" operator.
*
+ * @param clazz the class to test.
+ * @param superclass the superclass.
* @return true, if clazz is an instance of superclass.
- * @throws ClassNotFoundException if any superclasses or superinterfaces of clazz can't be found
+ * @throws ClassNotFoundException if any superclasses or superinterfaces of clazz can't be found.
*/
public static boolean instanceOf(final JavaClass clazz, final JavaClass superclass) throws ClassNotFoundException {
return clazz.instanceOf(superclass);
}
/**
+ * Tests if clazz is an instance of superclass.
+ *
+ * @param clazz the class to test.
+ * @param superclass the superclass name.
* @return true, if clazz is an instance of superclass.
- * @throws ClassNotFoundException if superclass can't be found
+ * @throws ClassNotFoundException if superclass can't be found.
*/
public static boolean instanceOf(final JavaClass clazz, final String superclass) throws ClassNotFoundException {
return instanceOf(clazz, lookupClass(superclass));
}
/**
+ * Tests if clazz is an instance of superclass.
+ *
+ * @param clazz the class name to test.
+ * @param superclass the superclass.
* @return true, if clazz is an instance of superclass.
- * @throws ClassNotFoundException if clazz can't be found
+ * @throws ClassNotFoundException if clazz can't be found.
*/
public static boolean instanceOf(final String clazz, final JavaClass superclass) throws ClassNotFoundException {
return instanceOf(lookupClass(clazz), superclass);
}
/**
+ * Tests if clazz is an instance of superclass.
+ *
+ * @param clazz the class name to test.
+ * @param superclass the superclass name.
* @return true, if clazz is an instance of superclass.
- * @throws ClassNotFoundException if either clazz or superclass can't be found
+ * @throws ClassNotFoundException if either clazz or superclass can't be found.
*/
public static boolean instanceOf(final String clazz, final String superclass) throws ClassNotFoundException {
return instanceOf(lookupClass(clazz), lookupClass(superclass));
@@ -164,27 +215,32 @@ public static boolean instanceOf(final String clazz, final String superclass) th
/**
* Tries to find class source using the internal repository instance.
*
+ * @param clazz the class.
* @see Class
* @return JavaClass object for given runtime class.
- * @throws ClassNotFoundException if the class could not be found or parsed correctly
+ * @throws ClassNotFoundException if the class could not be found or parsed correctly.
*/
public static JavaClass lookupClass(final Class> clazz) throws ClassNotFoundException {
return repository.loadClass(clazz);
}
/**
- * Lookups class somewhere found on your CLASSPATH, or whereever the repository instance looks for it.
+ * Lookups class somewhere found on your CLASSPATH, or wherever the repository instance looks for it.
*
+ * @param className the class name.
* @return class object for given fully qualified class name.
- * @throws ClassNotFoundException if the class could not be found or parsed correctly
+ * @throws ClassNotFoundException if the class could not be found or parsed correctly.
*/
public static JavaClass lookupClass(final String className) throws ClassNotFoundException {
return repository.loadClass(className);
}
/**
+ * Looks up the class file.
+ *
+ * @param className the class name.
* @return class file object for given Java class by looking on the system class path; returns null if the class file
- * can't be found
+ * can't be found.
*/
public static ClassPath.ClassFile lookupClassFile(final String className) {
try (ClassPath path = repository.getClassPath()) {
@@ -196,6 +252,8 @@ public static ClassPath.ClassFile lookupClassFile(final String className) {
/**
* Removes given class from repository.
+ *
+ * @param clazz the class to remove.
*/
public static void removeClass(final JavaClass clazz) {
repository.removeClass(clazz);
@@ -203,13 +261,17 @@ public static void removeClass(final JavaClass clazz) {
/**
* Removes class with given (fully qualified) name from repository.
+ *
+ * @param clazz the class name to remove.
*/
public static void removeClass(final String clazz) {
repository.removeClass(repository.findClass(clazz));
}
/**
- * Sets repository instance to be used for class loading
+ * Sets repository instance to be used for class loading.
+ *
+ * @param rep the repository instance.
*/
public static void setRepository(final org.apache.bcel.util.Repository rep) {
repository = rep;
diff --git a/src/main/java/org/apache/bcel/classfile/NestHost.java b/src/main/java/org/apache/bcel/classfile/NestHost.java
index b32ecc6dd7..9c2ffb7120 100644
--- a/src/main/java/org/apache/bcel/classfile/NestHost.java
+++ b/src/main/java/org/apache/bcel/classfile/NestHost.java
@@ -51,6 +51,8 @@ public final class NestHost extends Attribute {
}
/**
+ * Constructs a new NestHost.
+ *
* @param nameIndex Index in constant pool.
* @param length Content length in bytes.
* @param hostClassIndex Host class index.
@@ -105,6 +107,8 @@ public void dump(final DataOutputStream file) throws IOException {
}
/**
+ * Gets the host class index.
+ *
* @return index into constant pool of host class name.
*/
public int getHostClassIndex() {
@@ -112,6 +116,8 @@ public int getHostClassIndex() {
}
/**
+ * Sets the host class index.
+ *
* @param hostClassIndex the host class index.
*/
public void setHostClassIndex(final int hostClassIndex) {
diff --git a/src/main/java/org/apache/bcel/classfile/NestMembers.java b/src/main/java/org/apache/bcel/classfile/NestMembers.java
index 4545d8a592..8571894347 100644
--- a/src/main/java/org/apache/bcel/classfile/NestMembers.java
+++ b/src/main/java/org/apache/bcel/classfile/NestMembers.java
@@ -54,6 +54,8 @@ public final class NestMembers extends Attribute {
}
/**
+ * Constructs a new NestMembers.
+ *
* @param nameIndex Index in constant pool.
* @param length Content length in bytes.
* @param classes Table of indices in constant pool.
@@ -115,6 +117,8 @@ public void dump(final DataOutputStream file) throws IOException {
}
/**
+ * Gets the classes.
+ *
* @return array of indices into constant pool of class names.
*/
public int[] getClasses() {
@@ -122,6 +126,8 @@ public int[] getClasses() {
}
/**
+ * Gets the class names.
+ *
* @return string array of class names.
*/
public String[] getClassNames() {
@@ -131,6 +137,8 @@ public String[] getClassNames() {
}
/**
+ * Gets the number of classes.
+ *
* @return Length of classes table.
*/
public int getNumberClasses() {
@@ -138,6 +146,8 @@ public int getNumberClasses() {
}
/**
+ * Sets the classes.
+ *
* @param classes the list of class indexes Also redefines number_of_classes according to table length.
*/
public void setClasses(final int[] classes) {
diff --git a/src/main/java/org/apache/bcel/generic/MULTIANEWARRAY.java b/src/main/java/org/apache/bcel/generic/MULTIANEWARRAY.java
index b332a2e1fc..510d004489 100644
--- a/src/main/java/org/apache/bcel/generic/MULTIANEWARRAY.java
+++ b/src/main/java/org/apache/bcel/generic/MULTIANEWARRAY.java
@@ -42,6 +42,12 @@ public class MULTIANEWARRAY extends CPInstruction implements LoadClass, Allocati
MULTIANEWARRAY() {
}
+ /**
+ * Constructs a MULTIANEWARRAY instruction.
+ *
+ * @param index index into constant pool.
+ * @param dimensions number of dimensions.
+ */
public MULTIANEWARRAY(final int index, final short dimensions) {
super(org.apache.bcel.Const.MULTIANEWARRAY, index);
if (dimensions < 1) {
@@ -90,6 +96,8 @@ public void dump(final DataOutputStream out) throws IOException {
}
/**
+ * Gets the number of dimensions.
+ *
* @return number of dimensions to be created.
*/
public final short getDimensions() {
diff --git a/src/main/java/org/apache/bcel/generic/NEW.java b/src/main/java/org/apache/bcel/generic/NEW.java
index fcdd7202a8..fecee5ce6d 100644
--- a/src/main/java/org/apache/bcel/generic/NEW.java
+++ b/src/main/java/org/apache/bcel/generic/NEW.java
@@ -35,6 +35,11 @@ public class NEW extends CPInstruction implements LoadClass, AllocationInstructi
NEW() {
}
+ /**
+ * Constructs a NEW instruction.
+ *
+ * @param index index into constant pool.
+ */
public NEW(final int index) {
super(org.apache.bcel.Const.NEW, index);
}
diff --git a/src/main/java/org/apache/bcel/generic/NEWARRAY.java b/src/main/java/org/apache/bcel/generic/NEWARRAY.java
index fd355fd19c..8ac94470f1 100644
--- a/src/main/java/org/apache/bcel/generic/NEWARRAY.java
+++ b/src/main/java/org/apache/bcel/generic/NEWARRAY.java
@@ -43,10 +43,20 @@ public class NEWARRAY extends Instruction implements AllocationInstruction, Exce
NEWARRAY() {
}
+ /**
+ * Constructs a NEWARRAY instruction.
+ *
+ * @param type element type of array.
+ */
public NEWARRAY(final BasicType type) {
this(type.getType());
}
+ /**
+ * Constructs a NEWARRAY instruction.
+ *
+ * @param type element type code.
+ */
public NEWARRAY(final byte type) {
super(org.apache.bcel.Const.NEWARRAY, (short) 2);
this.type = type;
@@ -83,6 +93,8 @@ public Class>[] getExceptions() {
}
/**
+ * Gets the type of the constructed array.
+ *
* @return type of constructed array.
*/
public final Type getType() {
@@ -90,6 +102,8 @@ public final Type getType() {
}
/**
+ * Gets the type code.
+ *
* @return numeric code for basic element type.
*/
public final byte getTypecode() {
diff --git a/src/main/java/org/apache/bcel/generic/NOP.java b/src/main/java/org/apache/bcel/generic/NOP.java
index 452197f792..7d80bfa45d 100644
--- a/src/main/java/org/apache/bcel/generic/NOP.java
+++ b/src/main/java/org/apache/bcel/generic/NOP.java
@@ -23,6 +23,9 @@
*/
public class NOP extends Instruction {
+ /**
+ * Constructs a NOP instruction.
+ */
public NOP() {
super(org.apache.bcel.Const.NOP, (short) 1);
}
diff --git a/src/main/java/org/apache/bcel/generic/NameSignatureInstruction.java b/src/main/java/org/apache/bcel/generic/NameSignatureInstruction.java
index bdb72d278c..f1a0349b30 100644
--- a/src/main/java/org/apache/bcel/generic/NameSignatureInstruction.java
+++ b/src/main/java/org/apache/bcel/generic/NameSignatureInstruction.java
@@ -31,14 +31,26 @@
*/
public abstract class NameSignatureInstruction extends CPInstruction {
+ /**
+ * Constructs a NameSignatureInstruction.
+ */
public NameSignatureInstruction() {
}
+ /**
+ * Constructs a NameSignatureInstruction.
+ *
+ * @param opcode the opcode.
+ * @param index index into constant pool.
+ */
public NameSignatureInstruction(final short opcode, final int index) {
super(opcode, index);
}
/**
+ * Gets the name of the referenced method or field.
+ *
+ * @param cpg constant pool generator.
* @return name of referenced method/field.
*/
public String getName(final ConstantPoolGen cpg) {
@@ -47,6 +59,12 @@ public String getName(final ConstantPoolGen cpg) {
return ((ConstantUtf8) cp.getConstant(cnat.getNameIndex())).getBytes();
}
+ /**
+ * Gets the name and type constant.
+ *
+ * @param cpg constant pool generator.
+ * @return the name and type constant.
+ */
public ConstantNameAndType getNameAndType(final ConstantPoolGen cpg) {
final ConstantPool cp = cpg.getConstantPool();
final ConstantCP cmr = (ConstantCP) cp.getConstant(super.getIndex());
@@ -54,6 +72,9 @@ public ConstantNameAndType getNameAndType(final ConstantPoolGen cpg) {
}
/**
+ * Gets the signature of the referenced method or field.
+ *
+ * @param cpg constant pool generator.
* @return signature of referenced method/field.
*/
public String getSignature(final ConstantPoolGen cpg) {
diff --git a/src/main/java/org/apache/bcel/generic/POP.java b/src/main/java/org/apache/bcel/generic/POP.java
index 96dbf0b7dd..fb18a9859d 100644
--- a/src/main/java/org/apache/bcel/generic/POP.java
+++ b/src/main/java/org/apache/bcel/generic/POP.java
@@ -27,6 +27,9 @@
*/
public class POP extends StackInstruction implements PopInstruction {
+ /**
+ * Constructs a POP instruction.
+ */
public POP() {
super(org.apache.bcel.Const.POP);
}
diff --git a/src/main/java/org/apache/bcel/generic/POP2.java b/src/main/java/org/apache/bcel/generic/POP2.java
index 7189e5e2d9..c63390c803 100644
--- a/src/main/java/org/apache/bcel/generic/POP2.java
+++ b/src/main/java/org/apache/bcel/generic/POP2.java
@@ -27,6 +27,9 @@
*/
public class POP2 extends StackInstruction implements PopInstruction {
+ /**
+ * Constructs a POP2 instruction.
+ */
public POP2() {
super(org.apache.bcel.Const.POP2);
}
diff --git a/src/main/java/org/apache/bcel/generic/PUTFIELD.java b/src/main/java/org/apache/bcel/generic/PUTFIELD.java
index 0125d03395..a42f61ab66 100644
--- a/src/main/java/org/apache/bcel/generic/PUTFIELD.java
+++ b/src/main/java/org/apache/bcel/generic/PUTFIELD.java
@@ -42,6 +42,11 @@ public class PUTFIELD extends FieldInstruction implements PopInstruction, Except
PUTFIELD() {
}
+ /**
+ * Constructs a PUTFIELD instruction.
+ *
+ * @param index index into constant pool.
+ */
public PUTFIELD(final int index) {
super(Const.PUTFIELD, index);
}
diff --git a/src/main/java/org/apache/bcel/generic/PUTSTATIC.java b/src/main/java/org/apache/bcel/generic/PUTSTATIC.java
index 1c9510cef6..03ee250a1b 100644
--- a/src/main/java/org/apache/bcel/generic/PUTSTATIC.java
+++ b/src/main/java/org/apache/bcel/generic/PUTSTATIC.java
@@ -42,6 +42,11 @@ public class PUTSTATIC extends FieldInstruction implements ExceptionThrower, Pop
PUTSTATIC() {
}
+ /**
+ * Constructs a PUTSTATIC instruction.
+ *
+ * @param index index into constant pool.
+ */
public PUTSTATIC(final int index) {
super(Const.PUTSTATIC, index);
}
diff --git a/src/main/java/org/apache/bcel/generic/RET.java b/src/main/java/org/apache/bcel/generic/RET.java
index 9f90066623..b2890970cd 100644
--- a/src/main/java/org/apache/bcel/generic/RET.java
+++ b/src/main/java/org/apache/bcel/generic/RET.java
@@ -41,6 +41,11 @@ public class RET extends Instruction implements IndexedInstruction, TypedInstruc
RET() {
}
+ /**
+ * Constructs a RET instruction.
+ *
+ * @param index index of local variable containing the return address.
+ */
public RET(final int index) {
super(org.apache.bcel.Const.RET, (short) 2);
setIndex(index); // May set wide as side effect
diff --git a/src/main/java/org/apache/bcel/generic/RETURN.java b/src/main/java/org/apache/bcel/generic/RETURN.java
index b508eba291..a97f1e4d71 100644
--- a/src/main/java/org/apache/bcel/generic/RETURN.java
+++ b/src/main/java/org/apache/bcel/generic/RETURN.java
@@ -27,6 +27,9 @@
*/
public class RETURN extends ReturnInstruction {
+ /**
+ * Constructs a RETURN instruction.
+ */
public RETURN() {
super(org.apache.bcel.Const.RETURN);
}
diff --git a/src/main/java/org/apache/bcel/generic/SALOAD.java b/src/main/java/org/apache/bcel/generic/SALOAD.java
index 1a5c7253d6..7c156dfe89 100644
--- a/src/main/java/org/apache/bcel/generic/SALOAD.java
+++ b/src/main/java/org/apache/bcel/generic/SALOAD.java
@@ -27,6 +27,9 @@
*/
public class SALOAD extends ArrayInstruction implements StackProducer {
+ /**
+ * Constructs a SALOAD instruction.
+ */
public SALOAD() {
super(org.apache.bcel.Const.SALOAD);
}
diff --git a/src/main/java/org/apache/bcel/generic/SASTORE.java b/src/main/java/org/apache/bcel/generic/SASTORE.java
index 0a24bbfaa3..d5581fc956 100644
--- a/src/main/java/org/apache/bcel/generic/SASTORE.java
+++ b/src/main/java/org/apache/bcel/generic/SASTORE.java
@@ -27,6 +27,9 @@
*/
public class SASTORE extends ArrayInstruction implements StackConsumer {
+ /**
+ * Constructs a SASTORE instruction.
+ */
public SASTORE() {
super(org.apache.bcel.Const.SASTORE);
}
diff --git a/src/main/java/org/apache/bcel/verifier/NativeVerifier.java b/src/main/java/org/apache/bcel/verifier/NativeVerifier.java
index 6fe2f22b8e..5cb1ef9ea9 100644
--- a/src/main/java/org/apache/bcel/verifier/NativeVerifier.java
+++ b/src/main/java/org/apache/bcel/verifier/NativeVerifier.java
@@ -30,6 +30,8 @@ public abstract class NativeVerifier {
/**
* Works only on the first argument.
+ *
+ * @param args command line arguments.
*/
public static void main(final String[] args) {
if (args.length != 1) {
From 8d6d63f6122a6274b64b6de719f1534368ee6745 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Fri, 13 Feb 2026 18:03:17 -0500
Subject: [PATCH 25/83] Restore old comments
---
.../apache/bcel/generic/EnumElementValueGen.java | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/apache/bcel/generic/EnumElementValueGen.java b/src/main/java/org/apache/bcel/generic/EnumElementValueGen.java
index 70e710f100..0547db1296 100644
--- a/src/main/java/org/apache/bcel/generic/EnumElementValueGen.java
+++ b/src/main/java/org/apache/bcel/generic/EnumElementValueGen.java
@@ -108,9 +108,13 @@ public ElementValue getElementValue() {
* @return the enum type string.
*/
public String getEnumTypeString() {
- // ...existing code...
+ // Constant cc = getConstantPool().getConstant(typeIdx);
+ // ConstantClass cu8 =
+ // (ConstantClass) getConstantPool().getConstant(typeIdx);
+ // return
+ // ((ConstantUtf8) getConstantPool().getConstant(cu8.getNameIndex())).getBytes();
return ((ConstantUtf8) getConstantPool().getConstant(typeIdx)).getBytes();
- // ...existing code...
+ // return Utility.signatureToString(cu8.getBytes());
}
/**
@@ -120,7 +124,10 @@ public String getEnumTypeString() {
*/
public String getEnumValueString() {
return ((ConstantUtf8) getConstantPool().getConstant(valueIdx)).getBytes();
- // ...existing code...
+ // ConstantString cu8 =
+ // (ConstantString) getConstantPool().getConstant(valueIdx);
+ // return
+ // ((ConstantUtf8) getConstantPool().getConstant(cu8.getStringIndex())).getBytes();
}
/**
From 867cd4d294b092f277524a4a142471b07feac1f1 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:56:55 -0500
Subject: [PATCH 26/83] Fix action types
---
src/changes/changes.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index b01907563f..00942df241 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -61,10 +61,10 @@ The type attribute can be add,update,fix,remove.
- Fix constant pool module access test on Java 26 and above #492.
- Add support for permitted subclasses #493.
- Add RecordComponentInfo.getAttribute(byte tag)#494.
+ Fix constant pool module access test on Java 26 and above #492.
+ Add support for permitted subclasses #493.
+ Add RecordComponentInfo.getAttribute(byte tag)#494.
Bump org.apache.commons:commons-parent from 95 to 96.
From 28fc315184895c896a717729f75ce79fd6f5956e Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:58:17 -0500
Subject: [PATCH 27/83] Deprecate org.apache.bcel.classfile.Utility.Utility().
Javadoc
---
src/changes/changes.xml | 1 +
.../org/apache/bcel/classfile/Utility.java | 84 ++++++++++++++++++-
2 files changed, 83 insertions(+), 2 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 00942df241..bc6820af41 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -62,6 +62,7 @@ The type attribute can be add,update,fix,remove.
Fix constant pool module access test on Java 26 and above #492.
+ Deprecate org.apache.bcel.classfile.Utility.Utility().
Add support for permitted subclasses #493.
Add RecordComponentInfo.getAttribute(byte tag)#494.
diff --git a/src/main/java/org/apache/bcel/classfile/Utility.java b/src/main/java/org/apache/bcel/classfile/Utility.java
index 4d3a547768..5c003b1577 100644
--- a/src/main/java/org/apache/bcel/classfile/Utility.java
+++ b/src/main/java/org/apache/bcel/classfile/Utility.java
@@ -48,6 +48,15 @@
// @since 6.0 methods are no longer final
public abstract class Utility {
+ /**
+ * Constructs a Utility.
+ *
+ * @deprecated Will be private in the next major release.
+ */
+ public Utility() {
+ // Default constructor for subclasses
+ }
+
/**
* Decode characters into bytes. Used by decode()
*/
@@ -221,6 +230,8 @@ private static short byteToShort(final byte b) {
}
/**
+ * Gets the class or interface type name.
+ *
* @param accessFlags the class flags.
* @return "class" or "interface", depending on the ACC_INTERFACE flag.
*/
@@ -229,6 +240,10 @@ public static String classOrInterface(final int accessFlags) {
}
/**
+ * Clears a bit in a flag.
+ *
+ * @param flag the flag value.
+ * @param i the bit position.
* @return 'flag' with bit 'i' set to 0.
*/
public static int clearBit(final int flag, final int i) {
@@ -236,6 +251,15 @@ public static int clearBit(final int flag, final int i) {
return (flag & bit) == 0 ? flag : flag ^ bit;
}
+ /**
+ * Disassembles byte code.
+ *
+ * @param code byte code array.
+ * @param constantPool the constant pool.
+ * @param index offset in code array.
+ * @param length number of opcodes to decompile.
+ * @return disassembled string representation.
+ */
public static String codeToString(final byte[] code, final ConstantPool constantPool, final int index, final int length) {
return codeToString(code, constantPool, index, length, true);
}
@@ -269,6 +293,14 @@ public static String codeToString(final byte[] code, final ConstantPool constant
return buf.toString();
}
+ /**
+ * Disassembles byte code.
+ *
+ * @param bytes stream of bytes.
+ * @param constantPool the constant pool.
+ * @return disassembled string representation.
+ * @throws IOException if a failure from reading from the bytes argument occurs.
+ */
public static String codeToString(final ByteSequence bytes, final ConstantPool constantPool) throws IOException {
return codeToString(bytes, constantPool, true);
}
@@ -580,6 +612,9 @@ public static String compactClassName(String str, final String prefix, final boo
/**
* Escape all occurrences of newline chars '\n', quotes \", etc.
+ *
+ * @param label the string to convert.
+ * @return the converted string.
*/
public static String convertString(final String label) {
final char[] ch = label.toCharArray();
@@ -644,7 +679,8 @@ private static int countBrackets(final String brackets) {
*
* @param s the string to convert.
* @param uncompress use gzip to uncompress the stream of bytes.
- * @throws IOException if there's a gzip exception
+ * @return the decoded byte array.
+ * @throws IOException if there's a gzip exception.
*/
public static byte[] decode(final String s, final boolean uncompress) throws IOException {
byte[] bytes;
@@ -684,7 +720,8 @@ public static byte[] decode(final String s, final boolean uncompress) throws IOE
*
* @param bytes the byte array to convert.
* @param compress use gzip to minimize string.
- * @throws IOException if there's a gzip exception
+ * @return the encoded string.
+ * @throws IOException if there's a gzip exception.
*/
public static String encode(byte[] bytes, final boolean compress) throws IOException {
if (compress) {
@@ -819,6 +856,8 @@ public static String getSignature(String type) {
}
/**
+ * Tests if a character is part of a Java identifier.
+ *
* @param ch the character to test if it's part of an identifier.
* @return true, if character is one of (a, ... z, A, ... Z, 0, ... 9, _).
*/
@@ -827,6 +866,10 @@ public static boolean isJavaIdentifierPart(final char ch) {
}
/**
+ * Tests if a bit is set.
+ *
+ * @param flag the flag value.
+ * @param i the bit position.
* @return true, if bit 'i' in 'flag' is set.
*/
public static boolean isSet(final int flag, final int i) {
@@ -1039,14 +1082,35 @@ private static int pow2(final int n) {
return 1 << n;
}
+ /**
+ * Prints an array to a string.
+ *
+ * @param obj the array to print.
+ * @return the string representation.
+ */
public static String printArray(final Object[] obj) {
return printArray(obj, true);
}
+ /**
+ * Prints an array to a string.
+ *
+ * @param obj the array to print.
+ * @param braces whether to include braces.
+ * @return the string representation.
+ */
public static String printArray(final Object[] obj, final boolean braces) {
return printArray(obj, braces, false);
}
+ /**
+ * Prints an array to a string.
+ *
+ * @param obj the array to print.
+ * @param braces whether to include braces.
+ * @param quote whether to quote elements.
+ * @return the string representation.
+ */
public static String printArray(final Object[] obj, final boolean braces, final boolean quote) {
if (obj == null) {
return null;
@@ -1071,10 +1135,22 @@ public static String printArray(final Object[] obj, final boolean braces, final
return buf.toString();
}
+ /**
+ * Prints an array to a stream.
+ *
+ * @param out the output stream.
+ * @param obj the array to print.
+ */
public static void printArray(final PrintStream out, final Object[] obj) {
out.println(printArray(obj, true));
}
+ /**
+ * Prints an array to a writer.
+ *
+ * @param out the output writer.
+ * @param obj the array to print.
+ */
public static void printArray(final PrintWriter out, final Object[] obj) {
out.println(printArray(obj, true));
}
@@ -1126,6 +1202,10 @@ public static short searchOpcode(final String name) {
}
/**
+ * Sets a bit in a flag.
+ *
+ * @param flag the flag value.
+ * @param i the bit position.
* @return 'flag' with bit 'i' set to 1.
*/
public static int setBit(final int flag, final int i) {
From 55fc4e857ff48457e1fcba1da1bef415e4b7f34c Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:53 -0500
Subject: [PATCH 28/83] Javadoc
---
.../java/org/apache/bcel/classfile/PMGClass.java | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/src/main/java/org/apache/bcel/classfile/PMGClass.java b/src/main/java/org/apache/bcel/classfile/PMGClass.java
index 7f4189ed2c..d1e72270c8 100644
--- a/src/main/java/org/apache/bcel/classfile/PMGClass.java
+++ b/src/main/java/org/apache/bcel/classfile/PMGClass.java
@@ -48,6 +48,8 @@ public final class PMGClass extends Attribute {
}
/**
+ * Constructs a PMGClass.
+ *
* @param nameIndex Index in constant pool to CONSTANT_Utf8.
* @param length Content length in bytes.
* @param pmgIndex index in constant pool for source file name.
@@ -103,6 +105,8 @@ public void dump(final DataOutputStream file) throws IOException {
}
/**
+ * Gets the PMG class index.
+ *
* @return Index in constant pool of source file name.
*/
public int getPMGClassIndex() {
@@ -110,6 +114,8 @@ public int getPMGClassIndex() {
}
/**
+ * Gets the PMG class name.
+ *
* @return PMG class name.
*/
public String getPMGClassName() {
@@ -117,6 +123,8 @@ public String getPMGClassName() {
}
/**
+ * Gets the PMG index.
+ *
* @return Index in constant pool of source file name.
*/
public int getPMGIndex() {
@@ -124,6 +132,8 @@ public int getPMGIndex() {
}
/**
+ * Gets the PMG name.
+ *
* @return PMG name.
*/
public String getPMGName() {
@@ -131,6 +141,8 @@ public String getPMGName() {
}
/**
+ * Sets the PMG class index.
+ *
* @param pmgClassIndex The class index.
*/
public void setPMGClassIndex(final int pmgClassIndex) {
@@ -138,6 +150,8 @@ public void setPMGClassIndex(final int pmgClassIndex) {
}
/**
+ * Sets the PMG index.
+ *
* @param pmgIndex The index.
*/
public void setPMGIndex(final int pmgIndex) {
From 92b5c5c41d5fc3c0763c067d2e5ffd3445802052 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:53 -0500
Subject: [PATCH 29/83] Javadoc
---
.../classfile/ParameterAnnotationEntry.java | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java b/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java
index e05d99c119..fce2cc756e 100644
--- a/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java
+++ b/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java
@@ -34,6 +34,12 @@ public class ParameterAnnotationEntry implements Node {
static final ParameterAnnotationEntry[] EMPTY_ARRAY = {};
+ /**
+ * Creates parameter annotation entries from attributes.
+ *
+ * @param attributes the attributes.
+ * @return the parameter annotation entries.
+ */
public static ParameterAnnotationEntry[] createParameterAnnotationEntries(final Attribute[] attributes) {
if (attributes == null) {
return EMPTY_ARRAY;
@@ -58,6 +64,7 @@ public static ParameterAnnotationEntry[] createParameterAnnotationEntries(final
* Constructs object from input stream.
*
* @param input Input stream.
+ * @param constantPool the constant pool.
* @throws IOException if an I/O error occurs.
*/
ParameterAnnotationEntry(final DataInput input, final ConstantPool constantPool) throws IOException {
@@ -80,6 +87,12 @@ public void accept(final Visitor v) {
v.visitParameterAnnotationEntry(this);
}
+ /**
+ * Dumps parameter annotation entry to file stream.
+ *
+ * @param dos Output file stream.
+ * @throws IOException if an I/O error occurs.
+ */
public void dump(final DataOutputStream dos) throws IOException {
dos.writeShort(annotationTable.length);
for (final AnnotationEntry entry : annotationTable) {
@@ -88,7 +101,9 @@ public void dump(final DataOutputStream dos) throws IOException {
}
/**
- * returns the array of annotation entries in this annotation
+ * Gets the annotation entries.
+ *
+ * @return the array of annotation entries in this annotation.
*/
public AnnotationEntry[] getAnnotationEntries() {
return annotationTable;
From 14017b49001cf4fa5d92cc6cf1553b1907c0335a Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:53 -0500
Subject: [PATCH 30/83] Javadoc
---
.../org/apache/bcel/classfile/ParameterAnnotations.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/bcel/classfile/ParameterAnnotations.java b/src/main/java/org/apache/bcel/classfile/ParameterAnnotations.java
index 1001a34054..48cbd76450 100644
--- a/src/main/java/org/apache/bcel/classfile/ParameterAnnotations.java
+++ b/src/main/java/org/apache/bcel/classfile/ParameterAnnotations.java
@@ -101,13 +101,17 @@ public void dump(final DataOutputStream dos) throws IOException {
}
/**
- * returns the array of parameter annotation entries in this parameter annotation.
+ * Gets the parameter annotation entries.
+ *
+ * @return the array of parameter annotation entries in this parameter annotation.
*/
public ParameterAnnotationEntry[] getParameterAnnotationEntries() {
return parameterAnnotationTable;
}
/**
+ * Gets the parameter annotation table.
+ *
* @return the parameter annotation entry table.
*/
public final ParameterAnnotationEntry[] getParameterAnnotationTable() {
@@ -120,6 +124,8 @@ public Iterator iterator() {
}
/**
+ * Sets the parameter annotation table.
+ *
* @param parameterAnnotationTable the entries to set in this parameter annotation.
*/
public final void setParameterAnnotationTable(final ParameterAnnotationEntry[] parameterAnnotationTable) {
From 1ec663c3f57f9bd79077a02eb409eb5216f022b1 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:53 -0500
Subject: [PATCH 31/83] Javadoc
---
.../org/apache/bcel/classfile/Signature.java | 30 +++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/bcel/classfile/Signature.java b/src/main/java/org/apache/bcel/classfile/Signature.java
index 67c1f29835..fdb8490c84 100644
--- a/src/main/java/org/apache/bcel/classfile/Signature.java
+++ b/src/main/java/org/apache/bcel/classfile/Signature.java
@@ -59,12 +59,24 @@ private static boolean identStart(final int ch) {
return ch == 'T' || ch == 'L';
}
- // @since 6.0 is no longer final
+ /**
+ * Tests if a string is an actual parameter list.
+ *
+ * @param s the string to test.
+ * @return true if the string is an actual parameter list.
+ * @since 6.0 is no longer final
+ */
public static boolean isActualParameterList(final String s) {
return s.startsWith("L") && s.endsWith(">;");
}
- // @since 6.0 is no longer final
+ /**
+ * Tests if a string is a formal parameter list.
+ *
+ * @param s the string to test.
+ * @return true if the string is a formal parameter list.
+ * @since 6.0 is no longer final
+ */
public static boolean isFormalParameterList(final String s) {
return s.startsWith("<") && s.indexOf(':') > 0;
}
@@ -147,6 +159,12 @@ private static void matchIdent(final MyByteArrayInputStream in, final StringBuil
}
}
+ /**
+ * Translates a signature string.
+ *
+ * @param s the signature string.
+ * @return the translated signature.
+ */
public static String translate(final String s) {
// System.out.println("Sig:" + s);
final StringBuilder buf = new StringBuilder();
@@ -170,6 +188,8 @@ public static String translate(final String s) {
}
/**
+ * Constructs a Signature.
+ *
* @param nameIndex Index in constant pool to CONSTANT_Utf8.
* @param length Content length in bytes.
* @param signatureIndex Index in constant pool to CONSTANT_Utf8.
@@ -225,6 +245,8 @@ public void dump(final DataOutputStream file) throws IOException {
}
/**
+ * Gets the GJ signature.
+ *
* @return GJ signature.
*/
public String getSignature() {
@@ -232,6 +254,8 @@ public String getSignature() {
}
/**
+ * Gets the signature index.
+ *
* @return Index in constant pool of source file name.
*/
public int getSignatureIndex() {
@@ -239,6 +263,8 @@ public int getSignatureIndex() {
}
/**
+ * Sets the signature index.
+ *
* @param signatureIndex the index info the constant pool of this signature.
*/
public void setSignatureIndex(final int signatureIndex) {
From 6f737bc97cf5e8dc754e7fd03faae8c7eeb5f732 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:53 -0500
Subject: [PATCH 32/83] Javadoc
---
.../bcel/classfile/SimpleElementValue.java | 59 +++++++++++++++++++
1 file changed, 59 insertions(+)
diff --git a/src/main/java/org/apache/bcel/classfile/SimpleElementValue.java b/src/main/java/org/apache/bcel/classfile/SimpleElementValue.java
index 89c69cccc3..693274f3c1 100644
--- a/src/main/java/org/apache/bcel/classfile/SimpleElementValue.java
+++ b/src/main/java/org/apache/bcel/classfile/SimpleElementValue.java
@@ -31,6 +31,13 @@
public class SimpleElementValue extends ElementValue {
private int index;
+ /**
+ * Constructs a SimpleElementValue.
+ *
+ * @param type the element value type.
+ * @param index the index into the constant pool.
+ * @param cpool the constant pool.
+ */
public SimpleElementValue(final int type, final int index, final ConstantPool cpool) {
super(type, cpool);
this.index = index;
@@ -58,12 +65,19 @@ public void dump(final DataOutputStream dos) throws IOException {
}
/**
+ * Gets the value entry index in the constant pool.
+ *
* @return Value entry index in the constant pool.
*/
public int getIndex() {
return index;
}
+ /**
+ * Gets the boolean value.
+ *
+ * @return the boolean value.
+ */
public boolean getValueBoolean() {
if (super.getType() != PRIMITIVE_BOOLEAN) {
throw new IllegalStateException("Don't call getValueBoolean() on a non BOOLEAN ElementValue");
@@ -72,6 +86,11 @@ public boolean getValueBoolean() {
return bo.getBytes() != 0;
}
+ /**
+ * Gets the byte value.
+ *
+ * @return the byte value.
+ */
public byte getValueByte() {
if (super.getType() != PRIMITIVE_BYTE) {
throw new IllegalStateException("Don't call getValueByte() on a non BYTE ElementValue");
@@ -79,6 +98,11 @@ public byte getValueByte() {
return (byte) super.getConstantPool().getConstantInteger(getIndex()).getBytes();
}
+ /**
+ * Gets the char value.
+ *
+ * @return the char value.
+ */
public char getValueChar() {
if (super.getType() != PRIMITIVE_CHAR) {
throw new IllegalStateException("Don't call getValueChar() on a non CHAR ElementValue");
@@ -86,6 +110,11 @@ public char getValueChar() {
return (char) super.getConstantPool().getConstantInteger(getIndex()).getBytes();
}
+ /**
+ * Gets the double value.
+ *
+ * @return the double value.
+ */
public double getValueDouble() {
if (super.getType() != PRIMITIVE_DOUBLE) {
throw new IllegalStateException("Don't call getValueDouble() on a non DOUBLE ElementValue");
@@ -94,6 +123,11 @@ public double getValueDouble() {
return d.getBytes();
}
+ /**
+ * Gets the float value.
+ *
+ * @return the float value.
+ */
public float getValueFloat() {
if (super.getType() != PRIMITIVE_FLOAT) {
throw new IllegalStateException("Don't call getValueFloat() on a non FLOAT ElementValue");
@@ -102,6 +136,11 @@ public float getValueFloat() {
return f.getBytes();
}
+ /**
+ * Gets the int value.
+ *
+ * @return the int value.
+ */
public int getValueInt() {
if (super.getType() != PRIMITIVE_INT) {
throw new IllegalStateException("Don't call getValueInt() on a non INT ElementValue");
@@ -109,6 +148,11 @@ public int getValueInt() {
return super.getConstantPool().getConstantInteger(getIndex()).getBytes();
}
+ /**
+ * Gets the long value.
+ *
+ * @return the long value.
+ */
public long getValueLong() {
if (super.getType() != PRIMITIVE_LONG) {
throw new IllegalStateException("Don't call getValueLong() on a non LONG ElementValue");
@@ -117,6 +161,11 @@ public long getValueLong() {
return j.getBytes();
}
+ /**
+ * Gets the short value.
+ *
+ * @return the short value.
+ */
public short getValueShort() {
if (super.getType() != PRIMITIVE_SHORT) {
throw new IllegalStateException("Don't call getValueShort() on a non SHORT ElementValue");
@@ -125,6 +174,11 @@ public short getValueShort() {
return (short) s.getBytes();
}
+ /**
+ * Gets the string value.
+ *
+ * @return the string value.
+ */
public String getValueString() {
if (super.getType() != STRING) {
throw new IllegalStateException("Don't call getValueString() on a non STRING ElementValue");
@@ -132,6 +186,11 @@ public String getValueString() {
return super.getConstantPool().getConstantUtf8(getIndex()).getBytes();
}
+ /**
+ * Sets the index into the constant pool.
+ *
+ * @param index the index.
+ */
public void setIndex(final int index) {
this.index = index;
}
From 7e38ba90dfe4e79198db003efd4385776d7e01ca Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:54 -0500
Subject: [PATCH 33/83] Javadoc
---
src/main/java/org/apache/bcel/classfile/SourceFile.java | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/main/java/org/apache/bcel/classfile/SourceFile.java b/src/main/java/org/apache/bcel/classfile/SourceFile.java
index c6c1fbb268..55cbe049d3 100644
--- a/src/main/java/org/apache/bcel/classfile/SourceFile.java
+++ b/src/main/java/org/apache/bcel/classfile/SourceFile.java
@@ -50,6 +50,8 @@ public final class SourceFile extends Attribute {
}
/**
+ * Constructs a SourceFile.
+ *
* @param nameIndex Index in constant pool to CONSTANT_Utf8, which should represent the string "SourceFile".
* @param length Content length in bytes, the value should be 2.
* @param constantPool The constant pool that this attribute is associated with.
@@ -105,6 +107,8 @@ public void dump(final DataOutputStream file) throws IOException {
}
/**
+ * Gets the source file index.
+ *
* @return Index in constant pool of source file name.
*/
public int getSourceFileIndex() {
@@ -112,6 +116,8 @@ public int getSourceFileIndex() {
}
/**
+ * Gets the source file name.
+ *
* @return Source file name.
*/
public String getSourceFileName() {
@@ -119,6 +125,8 @@ public String getSourceFileName() {
}
/**
+ * Sets the source file index.
+ *
* @param sourceFileIndex The source file index to set.
*/
public void setSourceFileIndex(final int sourceFileIndex) {
From 17edf2dee1da78fcafbdc8bd6edff8fdcacee49a Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:54 -0500
Subject: [PATCH 34/83] Javadoc
---
.../java/org/apache/bcel/classfile/StackMap.java | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/bcel/classfile/StackMap.java b/src/main/java/org/apache/bcel/classfile/StackMap.java
index 6f1f959844..a070250cd2 100644
--- a/src/main/java/org/apache/bcel/classfile/StackMap.java
+++ b/src/main/java/org/apache/bcel/classfile/StackMap.java
@@ -67,10 +67,12 @@ public final class StackMap extends Attribute {
}
}
- /*
+ /**
+ * Constructs a StackMap.
+ *
* @param nameIndex Index of name.
* @param length Content length in bytes.
- * @param map Table of stack map entries.
+ * @param table Table of stack map entries.
* @param constantPool Array of constants.
*/
public StackMap(final int nameIndex, final int length, final StackMapEntry[] table, final ConstantPool constantPool) {
@@ -117,11 +119,18 @@ public void dump(final DataOutputStream file) throws IOException {
}
}
+ /**
+ * Gets the map length.
+ *
+ * @return the map length.
+ */
public int getMapLength() {
return table.length;
}
/**
+ * Gets the stack map.
+ *
* @return Array of stack map entries.
*/
public StackMapEntry[] getStackMap() {
@@ -129,6 +138,8 @@ public StackMapEntry[] getStackMap() {
}
/**
+ * Sets the stack map.
+ *
* @param table Array of stack map entries.
*/
public void setStackMap(final StackMapEntry[] table) {
From 1ee240ff21612f5efdb71c7633daf4261f895c11 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:54 -0500
Subject: [PATCH 35/83] Javadoc
---
.../apache/bcel/classfile/StackMapEntry.java | 62 ++++++++++++++++++-
1 file changed, 61 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/bcel/classfile/StackMapEntry.java b/src/main/java/org/apache/bcel/classfile/StackMapEntry.java
index 2dba4ec1be..5511b778cd 100644
--- a/src/main/java/org/apache/bcel/classfile/StackMapEntry.java
+++ b/src/main/java/org/apache/bcel/classfile/StackMapEntry.java
@@ -157,6 +157,8 @@ public void accept(final Visitor v) {
}
/**
+ * Creates a deep copy of this object.
+ *
* @return deep copy of this object.
*/
public StackMapEntry copy() {
@@ -210,17 +212,29 @@ public void dump(final DataOutputStream file) throws IOException {
}
}
+ /**
+ * Gets the byte code offset.
+ *
+ * @return the byte code offset.
+ */
public int getByteCodeOffset() {
return byteCodeOffset;
}
/**
+ * Gets the constant pool.
+ *
* @return Constant pool used by this object.
*/
public ConstantPool getConstantPool() {
return constantPool;
}
+ /**
+ * Gets the frame type.
+ *
+ * @return the frame type.
+ */
public int getFrameType() {
return frameType;
}
@@ -261,18 +275,38 @@ int getMapEntrySize() {
return len;
}
+ /**
+ * Gets the number of locals.
+ *
+ * @return the number of locals.
+ */
public int getNumberOfLocals() {
return typesOfLocals.length;
}
+ /**
+ * Gets the number of stack items.
+ *
+ * @return the number of stack items.
+ */
public int getNumberOfStackItems() {
return typesOfStackItems.length;
}
+ /**
+ * Gets the types of locals.
+ *
+ * @return the types of locals.
+ */
public StackMapType[] getTypesOfLocals() {
return typesOfLocals;
}
+ /**
+ * Gets the types of stack items.
+ *
+ * @return the types of stack items.
+ */
public StackMapType[] getTypesOfStackItems() {
return typesOfStackItems;
}
@@ -287,6 +321,11 @@ private boolean invalidFrameType(final int f) {
// @formatter:on
}
+ /**
+ * Sets the byte code offset.
+ *
+ * @param newOffset the new offset.
+ */
public void setByteCodeOffset(final int newOffset) {
if (newOffset < 0 || newOffset > 32767) {
throw new IllegalArgumentException("Invalid StackMap offset: " + newOffset);
@@ -311,12 +350,19 @@ public void setByteCodeOffset(final int newOffset) {
}
/**
+ * Sets the constant pool.
+ *
* @param constantPool Constant pool to be used for this object.
*/
public void setConstantPool(final ConstantPool constantPool) {
this.constantPool = constantPool;
}
+ /**
+ * Sets the frame type.
+ *
+ * @param ft the frame type.
+ */
public void setFrameType(final int ft) {
if (ft >= Const.SAME_FRAME && ft <= Const.SAME_FRAME_MAX) {
byteCodeOffset = ft - Const.SAME_FRAME;
@@ -329,7 +375,9 @@ public void setFrameType(final int ft) {
}
/**
+ * Sets the number of locals (deprecated).
*
+ * @param n the number of locals.
* @deprecated Since 6.0
*/
@java.lang.Deprecated
@@ -337,17 +385,29 @@ public void setNumberOfLocals(final int n) { // TODO unused
}
/**
+ * Sets the number of stack items (deprecated).
*
+ * @param n the number of stack items.
* @deprecated Since 6.0
*/
@java.lang.Deprecated
public void setNumberOfStackItems(final int n) { // TODO unused
}
+ /**
+ * Sets the types of locals.
+ *
+ * @param types the types of locals.
+ */
public void setTypesOfLocals(final StackMapType[] types) {
typesOfLocals = types != null ? types : StackMapType.EMPTY_ARRAY;
}
+ /**
+ * Sets the types of stack items.
+ *
+ * @param types the types of stack items.
+ */
public void setTypesOfStackItems(final StackMapType[] types) {
typesOfStackItems = types != null ? types : StackMapType.EMPTY_ARRAY;
}
@@ -402,7 +462,7 @@ public String toString() {
}
/**
- * Update the distance (as an offset delta) from this StackMap entry to the next. Note that this might cause the
+ * Updates the distance (as an offset delta) from this StackMap entry to the next. Note that this might cause the
* frame type to change. Note also that delta may be negative.
*
* @param delta offset delta.
From e0aa548441323dde19611de44e1e5bb207deff3e Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:54 -0500
Subject: [PATCH 36/83] Javadoc
---
.../apache/bcel/classfile/StackMapType.java | 34 ++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/bcel/classfile/StackMapType.java b/src/main/java/org/apache/bcel/classfile/StackMapType.java
index 3c1f59bd52..59ee0f5a6e 100644
--- a/src/main/java/org/apache/bcel/classfile/StackMapType.java
+++ b/src/main/java/org/apache/bcel/classfile/StackMapType.java
@@ -33,6 +33,9 @@
*/
public final class StackMapType implements Node, Cloneable {
+ /**
+ * Empty array constant.
+ */
public static final StackMapType[] EMPTY_ARRAY = {}; // BCELifier code generator writes calls to constructor translating null to EMPTY_ARRAY
private byte type;
@@ -40,8 +43,11 @@ public final class StackMapType implements Node, Cloneable {
private ConstantPool constantPool;
/**
+ * Constructs a StackMapType.
+ *
* @param type type tag as defined in the Constants interface.
* @param index index to constant pool, or byte code offset.
+ * @param constantPool the constant pool.
*/
public StackMapType(final byte type, final int index, final ConstantPool constantPool) {
this.type = checkType(type);
@@ -53,6 +59,7 @@ public StackMapType(final byte type, final int index, final ConstantPool constan
* Constructs object from file stream.
*
* @param file Input stream.
+ * @param constantPool the constant pool.
* @throws IOException if an I/O error occurs.
*/
StackMapType(final DataInput file, final ConstantPool constantPool) throws IOException {
@@ -83,6 +90,8 @@ private byte checkType(final byte type) {
}
/**
+ * Creates a deep copy of this object.
+ *
* @return deep copy of this object.
*/
public StackMapType copy() {
@@ -118,6 +127,8 @@ public String getClassName() {
}
/**
+ * Gets the constant pool.
+ *
* @return Constant pool used by this object.
*/
public ConstantPool getConstantPool() {
@@ -125,18 +136,27 @@ public ConstantPool getConstantPool() {
}
/**
+ * Gets the index.
+ *
* @return index to constant pool if type == ITEM_Object, or offset in byte code, if type == ITEM_NewObject, and -1
- * otherwise
+ * otherwise.
*/
public int getIndex() {
return index;
}
+ /**
+ * Gets the type.
+ *
+ * @return the type.
+ */
public byte getType() {
return type;
}
/**
+ * Checks if this type has an index.
+ *
* @return true, if type is either ITEM_Object or ITEM_NewObject.
*/
public boolean hasIndex() {
@@ -157,16 +177,28 @@ private String printIndex() {
}
/**
+ * Sets the constant pool.
+ *
* @param constantPool Constant pool to be used for this object.
*/
public void setConstantPool(final ConstantPool constantPool) {
this.constantPool = constantPool;
}
+ /**
+ * Sets the index.
+ *
+ * @param index the index.
+ */
public void setIndex(final int index) {
this.index = index;
}
+ /**
+ * Sets the type.
+ *
+ * @param type the type.
+ */
public void setType(final byte type) {
this.type = checkType(type);
}
From d78e5f3e6aa167691ad2c3c757536876211051e1 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:54 -0500
Subject: [PATCH 37/83] Javadoc
---
src/main/java/org/apache/bcel/classfile/Synthetic.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/main/java/org/apache/bcel/classfile/Synthetic.java b/src/main/java/org/apache/bcel/classfile/Synthetic.java
index ac86f5b9c0..69c63f2381 100644
--- a/src/main/java/org/apache/bcel/classfile/Synthetic.java
+++ b/src/main/java/org/apache/bcel/classfile/Synthetic.java
@@ -45,6 +45,8 @@
public final class Synthetic extends Attribute {
/**
+ * Constructs a Synthetic attribute.
+ *
* @param nameIndex Index in constant pool to CONSTANT_Utf8, which should represent the string "Synthetic".
* @param length JVM Specification: "The value of the attribute_length item must be zero.".
* @param bytes Attribute contents.
From 167f769d384ba5493d5e4f74723d175a32d1eeaf Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:54 -0500
Subject: [PATCH 38/83] Javadoc
---
src/main/java/org/apache/bcel/classfile/Unknown.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/main/java/org/apache/bcel/classfile/Unknown.java b/src/main/java/org/apache/bcel/classfile/Unknown.java
index fc4d1c3b43..9848302eb3 100644
--- a/src/main/java/org/apache/bcel/classfile/Unknown.java
+++ b/src/main/java/org/apache/bcel/classfile/Unknown.java
@@ -137,6 +137,8 @@ public void dump(final DataOutputStream file) throws IOException {
}
/**
+ * Gets the data bytes.
+ *
* @return data bytes.
*/
public byte[] getBytes() {
@@ -152,6 +154,8 @@ public String getName() {
}
/**
+ * Sets the data bytes.
+ *
* @param bytes the bytes to set.
*/
public void setBytes(final byte[] bytes) {
From 5ef2a47f58fbef63a806d9ad551eab71baf707d1 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:55 -0500
Subject: [PATCH 39/83] Javadoc
---
.../java/org/apache/bcel/generic/ObjectType.java | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/apache/bcel/generic/ObjectType.java b/src/main/java/org/apache/bcel/generic/ObjectType.java
index 2fd4c4ff7a..aff11edb28 100644
--- a/src/main/java/org/apache/bcel/generic/ObjectType.java
+++ b/src/main/java/org/apache/bcel/generic/ObjectType.java
@@ -52,9 +52,11 @@ public ObjectType(final String className) {
}
/**
- * Java Virtual Machine Specification edition 2, īŋŊ 5.4.4 Access Control
+ * Java Virtual Machine Specification edition 2, 5.4.4 Access Control.
*
- * @throws ClassNotFoundException if the class referenced by this type can't be found
+ * @param accessor the accessing type.
+ * @return true if accessible.
+ * @throws ClassNotFoundException if the class referenced by this type can't be found.
*/
public boolean accessibleTo(final ObjectType accessor) throws ClassNotFoundException {
final JavaClass jc = Repository.lookupClass(className);
@@ -82,6 +84,8 @@ public String getClassName() {
}
/**
+ * Gets the hash code.
+ *
* @return a hash code value for the object.
*/
@Override
@@ -92,6 +96,7 @@ public int hashCode() {
/**
* If "this" doesn't reference a class, it references an interface or a non-existant entity.
*
+ * @return true if it references a class, false otherwise.
* @deprecated (since 6.0) this method returns an inaccurate result if the class or interface referenced cannot be
* found: use referencesClassExact() instead
*/
@@ -119,6 +124,7 @@ public boolean referencesClassExact() throws ClassNotFoundException {
/**
* If "this" doesn't reference an interface, it references a class or a non-existant entity.
*
+ * @return true if it references an interface, false otherwise.
* @deprecated (since 6.0) this method returns an inaccurate result if the class or interface referenced cannot be
* found: use referencesInterfaceExact() instead
*/
@@ -146,7 +152,9 @@ public boolean referencesInterfaceExact() throws ClassNotFoundException {
/**
* Return true if this type is a subclass of given ObjectType.
*
- * @throws ClassNotFoundException if any of this class's superclasses can't be found
+ * @param superclass the superclass to check against.
+ * @return true if this is a subclass.
+ * @throws ClassNotFoundException if any of this class's superclasses can't be found.
*/
public boolean subclassOf(final ObjectType superclass) throws ClassNotFoundException {
if (referencesInterfaceExact() || superclass.referencesInterfaceExact()) {
From 91287f6e343059e77b7258138022d510b0146585 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:55 -0500
Subject: [PATCH 40/83] Javadoc
---
.../java/org/apache/bcel/generic/PUSH.java | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/src/main/java/org/apache/bcel/generic/PUSH.java b/src/main/java/org/apache/bcel/generic/PUSH.java
index b0e5a42fd8..565a52fc19 100644
--- a/src/main/java/org/apache/bcel/generic/PUSH.java
+++ b/src/main/java/org/apache/bcel/generic/PUSH.java
@@ -45,6 +45,8 @@ public PUSH(final ConstantPoolGen cp, final ArrayType value) {
}
/**
+ * Constructs a PUSH for a boolean value.
+ *
* @param cp Constant pool.
* @param value to push.
*/
@@ -54,6 +56,8 @@ public PUSH(final ConstantPoolGen cp, final boolean value) {
}
/**
+ * Constructs a PUSH for a Boolean value.
+ *
* @param cp Constant pool.
* @param value to push.
*/
@@ -73,6 +77,8 @@ public PUSH(final ConstantPoolGen cp, final Character value) {
}
/**
+ * Constructs a PUSH for a double value.
+ *
* @param cp Constant pool.
* @param value to push.
*/
@@ -87,6 +93,8 @@ public PUSH(final ConstantPoolGen cp, final double value) {
}
/**
+ * Constructs a PUSH for a float value.
+ *
* @param cp Constant pool.
* @param value to push.
*/
@@ -121,6 +129,8 @@ public PUSH(final ConstantPoolGen cp, final int value) {
}
/**
+ * Constructs a PUSH for a long value.
+ *
* @param cp Constant pool.
* @param value to push.
*/
@@ -135,6 +145,8 @@ public PUSH(final ConstantPoolGen cp, final long value) {
}
/**
+ * Constructs a PUSH for a Number value.
+ *
* @param cp Constant pool.
* @param value to push.
*/
@@ -153,6 +165,7 @@ public PUSH(final ConstantPoolGen cp, final Number value) {
}
/**
+ * Constructs a PUSH for an ObjectType value.
*
* @param cp The constant pool.
* @param value to push.
@@ -167,6 +180,8 @@ public PUSH(final ConstantPoolGen cp, final ObjectType value) {
}
/**
+ * Constructs a PUSH for a String value.
+ *
* @param cp Constant pool.
* @param value to push.
*/
@@ -178,6 +193,11 @@ public PUSH(final ConstantPoolGen cp, final String value) {
}
}
+ /**
+ * Gets the instruction.
+ *
+ * @return the instruction.
+ */
public Instruction getInstruction() {
return instruction;
}
From ed8f580ea8d16a1f839b654db384f9506a694b57 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:55 -0500
Subject: [PATCH 41/83] Javadoc
---
src/main/java/org/apache/bcel/generic/ReferenceType.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/bcel/generic/ReferenceType.java b/src/main/java/org/apache/bcel/generic/ReferenceType.java
index f78be865a8..d4a3f22bce 100644
--- a/src/main/java/org/apache/bcel/generic/ReferenceType.java
+++ b/src/main/java/org/apache/bcel/generic/ReferenceType.java
@@ -28,12 +28,18 @@
public abstract class ReferenceType extends Type {
/**
- * Class is non-abstract but not instantiable from the outside
+ * Class is non-abstract but not instantiable from the outside.
*/
ReferenceType() {
super(Const.T_OBJECT, "");
}
+ /**
+ * Constructs a ReferenceType.
+ *
+ * @param t the type.
+ * @param s the signature.
+ */
protected ReferenceType(final byte t, final String s) {
super(t, s);
}
From ffe0301d6c34a9aa19cad632a826299bc8ad0bd9 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:55 -0500
Subject: [PATCH 42/83] Javadoc
---
src/main/java/org/apache/bcel/generic/ReturnInstruction.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/main/java/org/apache/bcel/generic/ReturnInstruction.java b/src/main/java/org/apache/bcel/generic/ReturnInstruction.java
index b76e67dfa2..9f10336034 100644
--- a/src/main/java/org/apache/bcel/generic/ReturnInstruction.java
+++ b/src/main/java/org/apache/bcel/generic/ReturnInstruction.java
@@ -46,6 +46,11 @@ public Class>[] getExceptions() {
return new Class[] {ExceptionConst.ILLEGAL_MONITOR_STATE};
}
+ /**
+ * Gets the type of the returned value.
+ *
+ * @return the type.
+ */
public Type getType() {
final short opcode = super.getOpcode();
switch (opcode) {
From 4957bbf011b6cadd282bee3981a343541476c1a1 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:55 -0500
Subject: [PATCH 43/83] Javadoc
---
.../java/org/apache/bcel/generic/ReturnaddressType.java | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/main/java/org/apache/bcel/generic/ReturnaddressType.java b/src/main/java/org/apache/bcel/generic/ReturnaddressType.java
index 1c4818bf73..f59ae63e2b 100644
--- a/src/main/java/org/apache/bcel/generic/ReturnaddressType.java
+++ b/src/main/java/org/apache/bcel/generic/ReturnaddressType.java
@@ -27,6 +27,7 @@
*/
public class ReturnaddressType extends Type {
+ /** Predefined constant for a returnaddress with no target. */
public static final ReturnaddressType NO_TARGET = new ReturnaddressType();
private InstructionHandle returnTarget;
@@ -39,6 +40,8 @@ private ReturnaddressType() {
/**
* Creates a ReturnaddressType object with a target.
+ *
+ * @param returnTarget the target instruction.
*/
public ReturnaddressType(final InstructionHandle returnTarget) {
super(Const.T_ADDRESS, "");
@@ -47,6 +50,9 @@ public ReturnaddressType(final InstructionHandle returnTarget) {
/**
* Returns if the two Returnaddresses refer to the same target.
+ *
+ * @param rat the object to compare.
+ * @return true if equal.
*/
@Override
public boolean equals(final Object rat) {
@@ -61,6 +67,8 @@ public boolean equals(final Object rat) {
}
/**
+ * Gets the target of this ReturnaddressType.
+ *
* @return the target of this ReturnaddressType.
*/
public InstructionHandle getTarget() {
From 17de723e847d5816ac7aa1b07235728c1ea7b285 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:55 -0500
Subject: [PATCH 44/83] Javadoc
---
src/main/java/org/apache/bcel/generic/SIPUSH.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/main/java/org/apache/bcel/generic/SIPUSH.java b/src/main/java/org/apache/bcel/generic/SIPUSH.java
index 519895326c..3cc7d5daa0 100644
--- a/src/main/java/org/apache/bcel/generic/SIPUSH.java
+++ b/src/main/java/org/apache/bcel/generic/SIPUSH.java
@@ -40,6 +40,11 @@ public class SIPUSH extends Instruction implements ConstantPushInstruction {
SIPUSH() {
}
+ /**
+ * Constructs a SIPUSH.
+ *
+ * @param b the value.
+ */
public SIPUSH(final short b) {
super(org.apache.bcel.Const.SIPUSH, (short) 3);
this.b = b;
From 80d12c0d57ff70d11861066f9ae19993ba744791 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:56 -0500
Subject: [PATCH 45/83] Javadoc
---
src/main/java/org/apache/bcel/generic/SWAP.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/main/java/org/apache/bcel/generic/SWAP.java b/src/main/java/org/apache/bcel/generic/SWAP.java
index 11cc455098..6deaaa4ebc 100644
--- a/src/main/java/org/apache/bcel/generic/SWAP.java
+++ b/src/main/java/org/apache/bcel/generic/SWAP.java
@@ -27,6 +27,9 @@
*/
public class SWAP extends StackInstruction implements StackConsumer, StackProducer {
+ /**
+ * Constructs a SWAP instruction.
+ */
public SWAP() {
super(org.apache.bcel.Const.SWAP);
}
From 9e36f9794895e954d1da654c9356f98f8a69665d Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:56 -0500
Subject: [PATCH 46/83] Javadoc
---
src/main/java/org/apache/bcel/generic/SWITCH.java | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/main/java/org/apache/bcel/generic/SWITCH.java b/src/main/java/org/apache/bcel/generic/SWITCH.java
index 9f976bd50d..24d64b1fbc 100644
--- a/src/main/java/org/apache/bcel/generic/SWITCH.java
+++ b/src/main/java/org/apache/bcel/generic/SWITCH.java
@@ -75,6 +75,13 @@ private static void sort(final int l, final int r, final int[] match, final Inst
private final Select instruction;
+ /**
+ * Constructs a SWITCH with default maxGap of 1.
+ *
+ * @param match array of match values.
+ * @param targets the instructions to be branched to for each case.
+ * @param target the default target.
+ */
public SWITCH(final int[] match, final InstructionHandle[] targets, final InstructionHandle target) {
this(match, targets, target, 1);
}
@@ -125,6 +132,11 @@ public SWITCH(final int[] match, final InstructionHandle[] targets, final Instru
}
}
+ /**
+ * Gets the instruction.
+ *
+ * @return the instruction.
+ */
public Instruction getInstruction() {
return instruction;
}
From f50caf3b8429a0ef67171867b3d88f50ca6bb81b Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:56 -0500
Subject: [PATCH 47/83] Javadoc
---
.../bcel/generic/SimpleElementValueGen.java | 90 ++++++++++++++++++-
1 file changed, 89 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/bcel/generic/SimpleElementValueGen.java b/src/main/java/org/apache/bcel/generic/SimpleElementValueGen.java
index de1080245f..b48e290a0c 100644
--- a/src/main/java/org/apache/bcel/generic/SimpleElementValueGen.java
+++ b/src/main/java/org/apache/bcel/generic/SimpleElementValueGen.java
@@ -40,6 +40,13 @@ public class SimpleElementValueGen extends ElementValueGen {
// For 'class' this points to the class entry in the cpGen
private final int idx;
+ /**
+ * Constructs a SimpleElementValueGen for a boolean value.
+ *
+ * @param type the element value type.
+ * @param cpGen the constant pool generator.
+ * @param value the boolean value.
+ */
public SimpleElementValueGen(final int type, final ConstantPoolGen cpGen, final boolean value) {
super(type, cpGen);
if (value) {
@@ -49,41 +56,97 @@ public SimpleElementValueGen(final int type, final ConstantPoolGen cpGen, final
}
}
+ /**
+ * Constructs a SimpleElementValueGen for a byte value.
+ *
+ * @param type the element value type.
+ * @param cpGen the constant pool generator.
+ * @param value the byte value.
+ */
public SimpleElementValueGen(final int type, final ConstantPoolGen cpGen, final byte value) {
super(type, cpGen);
idx = getConstantPool().addInteger(value);
}
+ /**
+ * Constructs a SimpleElementValueGen for a char value.
+ *
+ * @param type the element value type.
+ * @param cpGen the constant pool generator.
+ * @param value the char value.
+ */
public SimpleElementValueGen(final int type, final ConstantPoolGen cpGen, final char value) {
super(type, cpGen);
idx = getConstantPool().addInteger(value);
}
+ /**
+ * Constructs a SimpleElementValueGen for a double value.
+ *
+ * @param type the element value type.
+ * @param cpGen the constant pool generator.
+ * @param value the double value.
+ */
public SimpleElementValueGen(final int type, final ConstantPoolGen cpGen, final double value) {
super(type, cpGen);
idx = getConstantPool().addDouble(value);
}
+ /**
+ * Constructs a SimpleElementValueGen for a float value.
+ *
+ * @param type the element value type.
+ * @param cpGen the constant pool generator.
+ * @param value the float value.
+ */
public SimpleElementValueGen(final int type, final ConstantPoolGen cpGen, final float value) {
super(type, cpGen);
idx = getConstantPool().addFloat(value);
}
+ /**
+ * Constructs a SimpleElementValueGen for an int value.
+ *
+ * @param type the element value type.
+ * @param cpGen the constant pool generator.
+ * @param value the int value.
+ */
public SimpleElementValueGen(final int type, final ConstantPoolGen cpGen, final int value) {
super(type, cpGen);
idx = getConstantPool().addInteger(value);
}
+ /**
+ * Constructs a SimpleElementValueGen for a long value.
+ *
+ * @param type the element value type.
+ * @param cpGen the constant pool generator.
+ * @param value the long value.
+ */
public SimpleElementValueGen(final int type, final ConstantPoolGen cpGen, final long value) {
super(type, cpGen);
idx = getConstantPool().addLong(value);
}
+ /**
+ * Constructs a SimpleElementValueGen for a short value.
+ *
+ * @param type the element value type.
+ * @param cpGen the constant pool generator.
+ * @param value the short value.
+ */
public SimpleElementValueGen(final int type, final ConstantPoolGen cpGen, final short value) {
super(type, cpGen);
idx = getConstantPool().addInteger(value);
}
+ /**
+ * Constructs a SimpleElementValueGen for a String value.
+ *
+ * @param type the element value type.
+ * @param cpGen the constant pool generator.
+ * @param value the string value.
+ */
public SimpleElementValueGen(final int type, final ConstantPoolGen cpGen, final String value) {
super(type, cpGen);
idx = getConstantPool().addUtf8(value);
@@ -95,6 +158,10 @@ public SimpleElementValueGen(final int type, final ConstantPoolGen cpGen, final
/**
* Protected ctor used for deserialization, doesn't *put* an entry in the constant pool, assumes the one at the supplied
* index is correct.
+ *
+ * @param type the element value type.
+ * @param idx the constant pool index.
+ * @param cpGen the constant pool generator.
*/
protected SimpleElementValueGen(final int type, final int idx, final ConstantPoolGen cpGen) {
super(type, cpGen);
@@ -104,6 +171,10 @@ protected SimpleElementValueGen(final int type, final int idx, final ConstantPoo
/**
* The boolean controls whether we copy info from the 'old' constant pool to the 'new'. You need to use this ctor if the
* annotation is being copied from one file to another.
+ *
+ * @param value the simple element value to copy.
+ * @param cpool the constant pool generator.
+ * @param copyPoolEntries whether to copy pool entries.
*/
public SimpleElementValueGen(final SimpleElementValue value, final ConstantPoolGen cpool, final boolean copyPoolEntries) {
super(value.getElementValueType(), cpool);
@@ -171,17 +242,29 @@ public void dump(final DataOutputStream dos) throws IOException {
}
/**
- * Return immutable variant
+ * Gets the immutable variant.
+ *
+ * @return the immutable variant.
*/
@Override
public ElementValue getElementValue() {
return new SimpleElementValue(super.getElementValueType(), idx, getConstantPool().getConstantPool());
}
+ /**
+ * Gets the constant pool index.
+ *
+ * @return the index.
+ */
public int getIndex() {
return idx;
}
+ /**
+ * Gets the int value.
+ *
+ * @return the int value.
+ */
public int getValueInt() {
if (super.getElementValueType() != PRIMITIVE_INT) {
throw new IllegalStateException("Don't call getValueString() on a non STRING ElementValue");
@@ -190,6 +273,11 @@ public int getValueInt() {
return c.getBytes();
}
+ /**
+ * Gets the string value.
+ *
+ * @return the string value.
+ */
public String getValueString() {
if (super.getElementValueType() != STRING) {
throw new IllegalStateException("Don't call getValueString() on a non STRING ElementValue");
From 3cb7ff9eba563aca2ffc965744ef0b6344089c7f Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:56 -0500
Subject: [PATCH 48/83] Javadoc
---
src/main/java/org/apache/bcel/generic/TABLESWITCH.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/main/java/org/apache/bcel/generic/TABLESWITCH.java b/src/main/java/org/apache/bcel/generic/TABLESWITCH.java
index b9cb2c5c59..b43742f86b 100644
--- a/src/main/java/org/apache/bcel/generic/TABLESWITCH.java
+++ b/src/main/java/org/apache/bcel/generic/TABLESWITCH.java
@@ -37,6 +37,8 @@ public class TABLESWITCH extends Select {
}
/**
+ * Constructs a TABLESWITCH instruction.
+ *
* @param match sorted array of match values, match[0] must be low value, match[match_length - 1] high value.
* @param targets where to branch for matched values.
* @param defaultTarget default branch.
From 60f4e2a887eecec81348a78c62e13ad65979c218 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:56 -0500
Subject: [PATCH 49/83] Javadoc
---
.../java/org/apache/bcel/generic/TargetLostException.java | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/main/java/org/apache/bcel/generic/TargetLostException.java b/src/main/java/org/apache/bcel/generic/TargetLostException.java
index e662e6e0c2..fd3b38f00f 100644
--- a/src/main/java/org/apache/bcel/generic/TargetLostException.java
+++ b/src/main/java/org/apache/bcel/generic/TargetLostException.java
@@ -48,8 +48,16 @@
public final class TargetLostException extends Exception {
private static final long serialVersionUID = -6857272667645328384L;
+
+ /** The target instruction handles that were lost. */
private final InstructionHandle[] targets;
+ /**
+ * Constructs a TargetLostException.
+ *
+ * @param targets the instruction handles.
+ * @param message the exception message.
+ */
TargetLostException(final InstructionHandle[] targets, final String message) {
super(message);
this.targets = targets;
From f56aa1063c615a5722204a18a0a6928ca9a9b7c5 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:56 -0500
Subject: [PATCH 50/83] Javadoc
---
.../java/org/apache/bcel/generic/Type.java | 39 +++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/src/main/java/org/apache/bcel/generic/Type.java b/src/main/java/org/apache/bcel/generic/Type.java
index 406e52b064..c27886ec18 100644
--- a/src/main/java/org/apache/bcel/generic/Type.java
+++ b/src/main/java/org/apache/bcel/generic/Type.java
@@ -41,27 +41,54 @@ public abstract class Type {
*/
public static final BasicType VOID = new BasicType(Const.T_VOID);
+ /** Predefined constant for boolean type. */
public static final BasicType BOOLEAN = new BasicType(Const.T_BOOLEAN);
+
+ /** Predefined constant for int type. */
public static final BasicType INT = new BasicType(Const.T_INT);
+
+ /** Predefined constant for short type. */
public static final BasicType SHORT = new BasicType(Const.T_SHORT);
+
+ /** Predefined constant for byte type. */
public static final BasicType BYTE = new BasicType(Const.T_BYTE);
+
+ /** Predefined constant for long type. */
public static final BasicType LONG = new BasicType(Const.T_LONG);
+
+ /** Predefined constant for double type. */
public static final BasicType DOUBLE = new BasicType(Const.T_DOUBLE);
+
+ /** Predefined constant for float type. */
public static final BasicType FLOAT = new BasicType(Const.T_FLOAT);
+
+ /** Predefined constant for char type. */
public static final BasicType CHAR = new BasicType(Const.T_CHAR);
+
+ /** Predefined constant for Object type. */
public static final ObjectType OBJECT = new ObjectType("java.lang.Object");
+
+ /** Predefined constant for Class type. */
public static final ObjectType CLASS = new ObjectType("java.lang.Class");
+
+ /** Predefined constant for String type. */
public static final ObjectType STRING = new ObjectType("java.lang.String");
+
+ /** Predefined constant for StringBuffer type. */
public static final ObjectType STRINGBUFFER = new ObjectType("java.lang.StringBuffer");
+
+ /** Predefined constant for Throwable type. */
public static final ObjectType THROWABLE = new ObjectType("java.lang.Throwable");
/**
* Empty array.
*/
public static final Type[] NO_ARGS = {};
+ /** Predefined constant for null type. */
public static final ReferenceType NULL = new ReferenceType() {
};
+ /** Predefined constant for unknown type. */
public static final Type UNKNOWN = new Type(Const.T_UNKNOWN, "") {
};
@@ -164,6 +191,12 @@ static int getReturnTypeSize(final String signature) {
return size(getTypeSize(signature.substring(index)));
}
+ /**
+ * Gets the signature for a method.
+ *
+ * @param meth the method.
+ * @return the method signature.
+ */
public static String getSignature(final java.lang.reflect.Method meth) {
final StringBuilder sb = new StringBuilder("(");
final Class>[] params = meth.getParameterTypes(); // avoid clone
@@ -329,6 +362,12 @@ private static void wrap(final ThreadLocal tl, final int value) {
@Deprecated
protected String signature; // signature for the type TODO should be private
+ /**
+ * Constructs a Type.
+ *
+ * @param type the type constant.
+ * @param signature the type signature.
+ */
protected Type(final byte type, final String signature) {
this.type = type;
this.signature = signature;
From 911c7bfccbd6e218bc408c0e799f85ee680724f0 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:57 -0500
Subject: [PATCH 51/83] Javadoc
---
src/main/java/org/apache/bcel/util/ClassVector.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/main/java/org/apache/bcel/util/ClassVector.java b/src/main/java/org/apache/bcel/util/ClassVector.java
index 5e78ba454d..890c48f14f 100644
--- a/src/main/java/org/apache/bcel/util/ClassVector.java
+++ b/src/main/java/org/apache/bcel/util/ClassVector.java
@@ -68,6 +68,9 @@ public JavaClass elementAt(final int index) {
return vec.get(index);
}
+ /**
+ * Initializes the vector when deserializing without data.
+ */
@SuppressWarnings("unused") // SE_TRANSIENT_FIELD_NOT_RESTORED
private void readObjectNoData() {
vec = new ArrayList<>();
From ef860e13a635f3d298a17d54fce3a78366359586 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:57 -0500
Subject: [PATCH 52/83] Javadoc
---
.../org/apache/bcel/util/SyntheticRepository.java | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/main/java/org/apache/bcel/util/SyntheticRepository.java b/src/main/java/org/apache/bcel/util/SyntheticRepository.java
index 3f1e99a195..ecc3ab208a 100644
--- a/src/main/java/org/apache/bcel/util/SyntheticRepository.java
+++ b/src/main/java/org/apache/bcel/util/SyntheticRepository.java
@@ -36,10 +36,21 @@ public class SyntheticRepository extends MemorySensitiveClassPathRepository {
private static final Map MAP = new ConcurrentHashMap<>(); // CLASSPATH X REPOSITORY
+ /**
+ * Gets the singleton instance for the system class path.
+ *
+ * @return the singleton instance.
+ */
public static SyntheticRepository getInstance() {
return getInstance(ClassPath.SYSTEM_CLASS_PATH);
}
+ /**
+ * Gets the singleton instance for the given class path.
+ *
+ * @param classPath the class path.
+ * @return the singleton instance.
+ */
public static SyntheticRepository getInstance(final ClassPath classPath) {
return MAP.computeIfAbsent(classPath, SyntheticRepository::new);
}
From 9bcad74988f363f7401f4bfde5ed335eb54b1369 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:57 -0500
Subject: [PATCH 53/83] Javadoc
---
src/main/java/org/apache/bcel/verifier/PassVerifier.java | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/main/java/org/apache/bcel/verifier/PassVerifier.java b/src/main/java/org/apache/bcel/verifier/PassVerifier.java
index 6fa325f889..b714e40e2a 100644
--- a/src/main/java/org/apache/bcel/verifier/PassVerifier.java
+++ b/src/main/java/org/apache/bcel/verifier/PassVerifier.java
@@ -46,6 +46,13 @@ public abstract class PassVerifier {
/** The VerificationResult cache. */
private VerificationResult verificationResult;
+ /**
+ * Constructs a PassVerifier.
+ */
+ public PassVerifier() {
+ // Default constructor for subclasses
+ }
+
/**
* This method adds a (warning) message to the message pool of this PassVerifier. This method is normally only
* internally used by BCEL's class file verifier "JustIce" and should not be used from the outside.
@@ -78,6 +85,7 @@ public String[] getMessages() {
/**
* Returns the (warning) messages that this PassVerifier accumulated during its do_verify()ing work.
*
+ * @return the list of messages.
* @see #addMessage(String)
* @see #do_verify()
*/
From a1c0a394b4de18d3a3ba201aba7394906cd9e3bb Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:57 -0500
Subject: [PATCH 54/83] Javadoc
---
src/main/java/org/apache/bcel/verifier/TransitiveHull.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/main/java/org/apache/bcel/verifier/TransitiveHull.java b/src/main/java/org/apache/bcel/verifier/TransitiveHull.java
index 7b9aebc6ec..6d26bc6075 100644
--- a/src/main/java/org/apache/bcel/verifier/TransitiveHull.java
+++ b/src/main/java/org/apache/bcel/verifier/TransitiveHull.java
@@ -31,6 +31,8 @@ public class TransitiveHull implements VerifierFactoryObserver {
/**
* This method implements a demonstration program of how to use the VerifierFactoryObserver. It transitively verifies
* all class files encountered; this may take up a lot of time and, more notably, memory.
+ *
+ * @param args command line arguments (expects one argument: the root class to verify).
*/
public static void main(final String[] args) {
if (args.length != 1) {
From d9868aa0cce9a69989d0f38f77eba1e68d5eb0eb Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:57 -0500
Subject: [PATCH 55/83] Javadoc
---
.../bcel/verifier/VerificationResult.java | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/bcel/verifier/VerificationResult.java b/src/main/java/org/apache/bcel/verifier/VerificationResult.java
index 17a58cef47..557ed8b2ce 100644
--- a/src/main/java/org/apache/bcel/verifier/VerificationResult.java
+++ b/src/main/java/org/apache/bcel/verifier/VerificationResult.java
@@ -59,7 +59,12 @@ public class VerificationResult {
/** The detailed message. */
private final String detailMessage;
- /** The usual constructor. */
+ /**
+ * The usual constructor.
+ *
+ * @param status the verification status.
+ * @param message the detail message.
+ */
public VerificationResult(final int status, final String message) {
numeric = status;
detailMessage = message;
@@ -67,6 +72,9 @@ public VerificationResult(final int status, final String message) {
/**
* Returns if two VerificationResult instances are equal.
+ *
+ * @param o the object to compare.
+ * @return true if equal.
*/
@Override
public boolean equals(final Object o) {
@@ -77,13 +85,19 @@ public boolean equals(final Object o) {
return other.numeric == this.numeric && other.detailMessage.equals(this.detailMessage);
}
- /** Returns a detailed message. */
+ /**
+ * Returns a detailed message.
+ *
+ * @return the detail message.
+ */
public String getMessage() {
return detailMessage;
}
/**
* Returns one of the {@link #VERIFIED_OK}, {@link #VERIFIED_NOTYET}, {@link #VERIFIED_REJECTED} constants.
+ *
+ * @return the verification status.
*/
public int getStatus() {
return numeric;
From b6fb9e7e08466cc9bf9131e547273c582460a110 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:57 -0500
Subject: [PATCH 56/83] Javadoc
---
.../java/org/apache/bcel/verifier/Verifier.java | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/bcel/verifier/Verifier.java b/src/main/java/org/apache/bcel/verifier/Verifier.java
index 79e22e728d..4fa7474f8d 100644
--- a/src/main/java/org/apache/bcel/verifier/Verifier.java
+++ b/src/main/java/org/apache/bcel/verifier/Verifier.java
@@ -55,6 +55,8 @@ public class Verifier {
* used. You should supply command-line arguments which are fully qualified namea of the classes to verify. These class
* files must be somewhere in your CLASSPATH (refer to Sun's documentation for questions about this) or you must have
* put the classes into the BCEL Repository yourself (via 'addClass(JavaClass)').
+ *
+ * @param args command line arguments (fully qualified class names).
*/
public static void main(final String[] args) {
System.out.println(BANNER);
@@ -132,7 +134,11 @@ static void verifyType(final String fullyQualifiedClassName) throws ClassNotFoun
className = fullyQualifiedClassName;
}
- /** Returns the VerificationResult for the given pass. */
+ /**
+ * Returns the VerificationResult for the given pass.
+ *
+ * @return the VerificationResult for pass 1.
+ */
public VerificationResult doPass1() {
if (p1v == null) {
p1v = new Pass1Verifier(this);
@@ -140,7 +146,11 @@ public VerificationResult doPass1() {
return p1v.verify();
}
- /** Returns the VerificationResult for the given pass. */
+ /**
+ * Returns the VerificationResult for the given pass.
+ *
+ * @return the VerificationResult for pass 2.
+ */
public VerificationResult doPass2() {
if (p2v == null) {
p2v = new Pass2Verifier(this);
@@ -184,6 +194,7 @@ public void flush() {
* created recursively by another Verifier and you got a reference to this Verifier by the getVerifiers() method of the
* VerifierFactory.
*
+ * @return the class name.
* @see VerifierFactory
*/
public final String getClassName() {
@@ -194,6 +205,7 @@ public final String getClassName() {
* This returns all the (warning) messages collected during verification. A prefix shows from which verifying pass a
* message originates.
*
+ * @return the array of messages.
* @throws ClassNotFoundException if this class can't be found.
*/
public String[] getMessages() throws ClassNotFoundException {
From 557c287d3bcece82fc458b919d6b3c0d3cf1745e Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:58 -0500
Subject: [PATCH 57/83] Javadoc
---
.../bcel/verifier/VerifierAppFrame.java | 38 +++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/src/main/java/org/apache/bcel/verifier/VerifierAppFrame.java b/src/main/java/org/apache/bcel/verifier/VerifierAppFrame.java
index 5b78c60397..ea9f3c4032 100644
--- a/src/main/java/org/apache/bcel/verifier/VerifierAppFrame.java
+++ b/src/main/java/org/apache/bcel/verifier/VerifierAppFrame.java
@@ -54,42 +54,80 @@
public class VerifierAppFrame extends JFrame {
private static final long serialVersionUID = -542458133073307640L;
+
+ /** Machine-generated GUI component. */
private JPanel contentPane;
+ /** Machine-generated GUI component. */
private final JSplitPane jSplitPane1 = new JSplitPane();
+ /** Machine-generated GUI component. */
private final JPanel jPanel1 = new JPanel();
+ /** Machine-generated GUI component. */
private final JPanel jPanel2 = new JPanel();
+ /** Machine-generated GUI component. */
private final JSplitPane jSplitPane2 = new JSplitPane();
+ /** Machine-generated GUI component. */
private final JPanel jPanel3 = new JPanel();
+ /** Machine-generated GUI component. */
private final JList classNamesJList = new JList<>();
+ /** Machine-generated GUI component. */
private final GridLayout gridLayout1 = new GridLayout();
+ /** Machine-generated GUI component. */
private final JPanel messagesPanel = new JPanel();
+ /** Machine-generated GUI component. */
private final GridLayout gridLayout2 = new GridLayout();
+ /** Machine-generated GUI component. */
private final JMenuBar jMenuBar1 = new JMenuBar();
+ /** Machine-generated GUI component. */
private final JMenu jMenu1 = new JMenu();
+ /** Machine-generated GUI component. */
private final JScrollPane jScrollPane1 = new JScrollPane();
+ /** Machine-generated GUI component. */
private final JScrollPane messagesScrollPane = new JScrollPane();
+ /** Machine-generated GUI component. */
private final JScrollPane jScrollPane3 = new JScrollPane();
+ /** Machine-generated GUI component. */
private final GridLayout gridLayout4 = new GridLayout();
+ /** Machine-generated GUI component. */
private final JScrollPane jScrollPane4 = new JScrollPane();
+ /** Machine-generated GUI component. */
private final CardLayout cardLayout1 = new CardLayout();
+ /** The current class being verified. */
private String currentClass;
+ /** Machine-generated GUI component. */
private final GridLayout gridLayout3 = new GridLayout();
+ /** Machine-generated GUI component. */
private final JTextPane pass1TextPane = new JTextPane();
+ /** Machine-generated GUI component. */
private final JTextPane pass2TextPane = new JTextPane();
+ /** Machine-generated GUI component. */
private final JTextPane messagesTextPane = new JTextPane();
+ /** Machine-generated GUI component. */
private final JMenuItem newFileMenuItem = new JMenuItem();
+ /** Machine-generated GUI component. */
private final JSplitPane jSplitPane3 = new JSplitPane();
+ /** Machine-generated GUI component. */
private final JSplitPane jSplitPane4 = new JSplitPane();
+ /** Machine-generated GUI component. */
private final JScrollPane jScrollPane2 = new JScrollPane();
+ /** Machine-generated GUI component. */
private final JScrollPane jScrollPane5 = new JScrollPane();
+ /** Machine-generated GUI component. */
private final JScrollPane jScrollPane6 = new JScrollPane();
+ /** Machine-generated GUI component. */
private final JScrollPane jScrollPane7 = new JScrollPane();
+ /** Machine-generated GUI component. */
private final JList pass3aJList = new JList<>();
+ /** Machine-generated GUI component. */
private final JList pass3bJList = new JList<>();
+ /** Machine-generated GUI component. */
private final JTextPane pass3aTextPane = new JTextPane();
+ /** Machine-generated GUI component. */
private final JTextPane pass3bTextPane = new JTextPane();
+ /** Machine-generated GUI component. */
private final JMenu jMenu2 = new JMenu();
+ /** Machine-generated GUI component. */
private final JMenuItem whatisMenuItem = new JMenuItem();
+ /** Machine-generated GUI component. */
private final JMenuItem aboutMenuItem = new JMenuItem();
/** Constructs a new instance. */
From e70c0f5026f987a5f8070e42d32f414868f40b69 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:58 -0500
Subject: [PATCH 58/83] Javadoc
---
.../java/org/apache/bcel/verifier/VerifierFactory.java | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/main/java/org/apache/bcel/verifier/VerifierFactory.java b/src/main/java/org/apache/bcel/verifier/VerifierFactory.java
index 15a72c0e18..9326d92efe 100644
--- a/src/main/java/org/apache/bcel/verifier/VerifierFactory.java
+++ b/src/main/java/org/apache/bcel/verifier/VerifierFactory.java
@@ -44,6 +44,8 @@ public class VerifierFactory {
/**
* Adds the VerifierFactoryObserver o to the list of observers.
+ *
+ * @param o the observer to add.
*/
public static void attach(final VerifierFactoryObserver o) {
OBSVERVERS.add(o);
@@ -61,6 +63,8 @@ public static void clear() {
/**
* Removes the VerifierFactoryObserver o from the list of observers.
+ *
+ * @param o the observer to remove.
*/
public static void detach(final VerifierFactoryObserver o) {
OBSVERVERS.remove(o);
@@ -70,6 +74,7 @@ public static void detach(final VerifierFactoryObserver o) {
* Returns the (only) verifier responsible for the class with the given name. Possibly a new Verifier object is
* transparently created.
*
+ * @param fullyQualifiedClassName the fully qualified class name.
* @return the (only) verifier responsible for the class with the given name.
*/
public static Verifier getVerifier(final String fullyQualifiedClassName) {
@@ -83,6 +88,8 @@ public static Verifier getVerifier(final String fullyQualifiedClassName) {
/**
* Returns all Verifier instances created so far. This is useful when a Verifier recursively lets the VerifierFactory
* create other Verifier instances and if you want to verify the transitive hull of referenced class files.
+ *
+ * @return array of all Verifier instances.
*/
public static Verifier[] getVerifiers() {
return MAP.values().toArray(Verifier.EMPTY_ARRAY);
From eb24e1f6fe6b453b00d58f0636d5871cec1c287e Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:58 -0500
Subject: [PATCH 59/83] Javadoc
---
.../org/apache/bcel/verifier/VerifierFactoryListModel.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/main/java/org/apache/bcel/verifier/VerifierFactoryListModel.java b/src/main/java/org/apache/bcel/verifier/VerifierFactoryListModel.java
index fda9a7767f..b2246860fd 100644
--- a/src/main/java/org/apache/bcel/verifier/VerifierFactoryListModel.java
+++ b/src/main/java/org/apache/bcel/verifier/VerifierFactoryListModel.java
@@ -37,6 +37,9 @@ public class VerifierFactoryListModel implements VerifierFactoryObserver, ListMo
private final List listeners = new ArrayList<>();
private final Set cache = new TreeSet<>();
+ /**
+ * Constructs a VerifierFactoryListModel.
+ */
public VerifierFactoryListModel() {
VerifierFactory.attach(this);
update(null); // fill cache.
From fd04cdcb60867c2e27a0c820d9b9e9fde5a697cb Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:58 -0500
Subject: [PATCH 60/83] Javadoc
---
.../java/org/apache/bcel/verifier/VerifierFactoryObserver.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/main/java/org/apache/bcel/verifier/VerifierFactoryObserver.java b/src/main/java/org/apache/bcel/verifier/VerifierFactoryObserver.java
index 15f772447b..96aa67dc05 100644
--- a/src/main/java/org/apache/bcel/verifier/VerifierFactoryObserver.java
+++ b/src/main/java/org/apache/bcel/verifier/VerifierFactoryObserver.java
@@ -32,6 +32,8 @@ public interface VerifierFactoryObserver {
/**
* VerifierFactoryObserver instances are notified invoking this method. The String argument is the fully qualified class
* name of a class a new Verifier instance created by the VerifierFactory operates on.
+ *
+ * @param s the fully qualified class name.
*/
void update(String s);
}
From 0a8517887fe5c0c1cbb260714afab714a7380b08 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:58 -0500
Subject: [PATCH 61/83] Javadoc
---
.../apache/bcel/verifier/VerifyDialog.java | 80 ++++++++++++++++---
1 file changed, 68 insertions(+), 12 deletions(-)
diff --git a/src/main/java/org/apache/bcel/verifier/VerifyDialog.java b/src/main/java/org/apache/bcel/verifier/VerifyDialog.java
index e3c6c11ffa..32c111bd81 100644
--- a/src/main/java/org/apache/bcel/verifier/VerifyDialog.java
+++ b/src/main/java/org/apache/bcel/verifier/VerifyDialog.java
@@ -144,42 +144,82 @@ public VerifyDialog() {
initialize();
}
- /** Machine-generated. */
+ /**
+ * Constructs a new instance.
+ *
+ * @param owner the parent Dialog.
+ */
public VerifyDialog(final Dialog owner) {
super(owner);
}
- /** Machine-generated. */
+ /**
+ * Constructs a new instance.
+ *
+ * @param owner the parent Dialog.
+ * @param modal whether the dialog is modal.
+ */
public VerifyDialog(final Dialog owner, final boolean modal) {
super(owner, modal);
}
- /** Machine-generated. */
+ /**
+ * Constructs a new instance.
+ *
+ * @param owner the parent Dialog.
+ * @param title the dialog title.
+ */
public VerifyDialog(final Dialog owner, final String title) {
super(owner, title);
}
- /** Machine-generated. */
+ /**
+ * Constructs a new instance.
+ *
+ * @param owner the parent Dialog.
+ * @param title the dialog title.
+ * @param modal whether the dialog is modal.
+ */
public VerifyDialog(final Dialog owner, final String title, final boolean modal) {
super(owner, title, modal);
}
- /** Machine-generated. */
+ /**
+ * Constructs a new instance.
+ *
+ * @param owner the parent Frame.
+ */
public VerifyDialog(final Frame owner) {
super(owner);
}
- /** Machine-generated. */
+ /**
+ * Constructs a new instance.
+ *
+ * @param owner the parent Frame.
+ * @param modal whether the dialog is modal.
+ */
public VerifyDialog(final Frame owner, final boolean modal) {
super(owner, modal);
}
- /** Machine-generated. */
+ /**
+ * Constructs a new instance.
+ *
+ * @param owner the parent Frame.
+ * @param title the dialog title.
+ */
public VerifyDialog(final Frame owner, final String title) {
super(owner, title);
}
- /** Machine-generated. */
+ /**
+ * Constructs a new instance.
+ *
+ * @param owner the parent Frame.
+ * @param title the dialog title.
+ * @param modal whether the dialog is modal.
+ */
public VerifyDialog(final Frame owner, final String title, final boolean modal) {
super(owner, title, modal);
}
@@ -259,7 +299,11 @@ private void connEtoC4(final ActionEvent arg1) {
}
}
- /** Machine-generated. */
+ /**
+ * Called when an action is performed.
+ *
+ * @param actionEvent the action event.
+ */
public void flushButton_ActionPerformed(final ActionEvent actionEvent) {
VerifierFactory.getVerifier(className).flush();
Repository.removeClass(className); // Make sure it will be reloaded.
@@ -486,7 +530,11 @@ private void initialize() {
// user code end
}
- /** Machine-generated. */
+ /**
+ * Called when an action is performed.
+ *
+ * @param actionEvent the action event.
+ */
public void pass1Button_ActionPerformed(final ActionEvent actionEvent) {
final Verifier v = VerifierFactory.getVerifier(className);
final VerificationResult vr = v.doPass1();
@@ -500,7 +548,11 @@ public void pass1Button_ActionPerformed(final ActionEvent actionEvent) {
}
}
- /** Machine-generated. */
+ /**
+ * Called when an action is performed.
+ *
+ * @param actionEvent the action event.
+ */
public void pass2Button_ActionPerformed(final ActionEvent actionEvent) {
pass1Button_ActionPerformed(actionEvent);
final Verifier v = VerifierFactory.getVerifier(className);
@@ -519,7 +571,11 @@ public void pass2Button_ActionPerformed(final ActionEvent actionEvent) {
}
}
- /** Machine-generated. */
+ /**
+ * Called when an action is performed.
+ *
+ * @param actionEvent the action event.
+ */
public void pass4Button_ActionPerformed(final ActionEvent actionEvent) {
pass2Button_ActionPerformed(actionEvent);
Color color = Color.green;
From e189ff935ec79aee4677540e84c0d35309cad7b4 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:58 -0500
Subject: [PATCH 62/83] Javadoc
---
.../bcel/verifier/exc/StaticCodeConstraintException.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/main/java/org/apache/bcel/verifier/exc/StaticCodeConstraintException.java b/src/main/java/org/apache/bcel/verifier/exc/StaticCodeConstraintException.java
index 243296a719..2d9ae4c67d 100644
--- a/src/main/java/org/apache/bcel/verifier/exc/StaticCodeConstraintException.java
+++ b/src/main/java/org/apache/bcel/verifier/exc/StaticCodeConstraintException.java
@@ -27,6 +27,11 @@
public abstract class StaticCodeConstraintException extends CodeConstraintException {
private static final long serialVersionUID = 3858523065007725128L;
+ /**
+ * Constructs a StaticCodeConstraintException.
+ *
+ * @param message the exception message.
+ */
public StaticCodeConstraintException(final String message) {
super(message);
}
From 416b355ab451ca3658409b2a80b45a178ebcc90b Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:58 -0500
Subject: [PATCH 63/83] Javadoc
---
.../exc/StaticCodeInstructionConstraintException.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/main/java/org/apache/bcel/verifier/exc/StaticCodeInstructionConstraintException.java b/src/main/java/org/apache/bcel/verifier/exc/StaticCodeInstructionConstraintException.java
index 05d0e956ca..c798e066e6 100644
--- a/src/main/java/org/apache/bcel/verifier/exc/StaticCodeInstructionConstraintException.java
+++ b/src/main/java/org/apache/bcel/verifier/exc/StaticCodeInstructionConstraintException.java
@@ -28,6 +28,11 @@
public class StaticCodeInstructionConstraintException extends StaticCodeConstraintException {
private static final long serialVersionUID = 4987255974346614794L;
+ /**
+ * Constructs a StaticCodeInstructionConstraintException.
+ *
+ * @param message the exception message.
+ */
public StaticCodeInstructionConstraintException(final String message) {
super(message);
}
From 6e5095f4a57428cc6375aaa57498c0da4bb2e054 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:59 -0500
Subject: [PATCH 64/83] Javadoc
---
.../exc/StaticCodeInstructionOperandConstraintException.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/main/java/org/apache/bcel/verifier/exc/StaticCodeInstructionOperandConstraintException.java b/src/main/java/org/apache/bcel/verifier/exc/StaticCodeInstructionOperandConstraintException.java
index bfbda883f9..e0da7ef6da 100644
--- a/src/main/java/org/apache/bcel/verifier/exc/StaticCodeInstructionOperandConstraintException.java
+++ b/src/main/java/org/apache/bcel/verifier/exc/StaticCodeInstructionOperandConstraintException.java
@@ -28,6 +28,11 @@
public class StaticCodeInstructionOperandConstraintException extends StaticCodeConstraintException {
private static final long serialVersionUID = 4780787099381933487L;
+ /**
+ * Constructs a StaticCodeInstructionOperandConstraintException.
+ *
+ * @param message the exception message.
+ */
public StaticCodeInstructionOperandConstraintException(final String message) {
super(message);
}
From c7893fcb677da9362e669f5f65473cb23bc861c7 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:59 -0500
Subject: [PATCH 65/83] Javadoc
---
src/main/java/org/apache/bcel/verifier/exc/Utility.java | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/bcel/verifier/exc/Utility.java b/src/main/java/org/apache/bcel/verifier/exc/Utility.java
index 7d09e42709..b0d06c8c74 100644
--- a/src/main/java/org/apache/bcel/verifier/exc/Utility.java
+++ b/src/main/java/org/apache/bcel/verifier/exc/Utility.java
@@ -28,7 +28,12 @@
*/
public final class Utility {
- /** This method returns the stack trace of a Throwable instance as a String. */
+ /**
+ * This method returns the stack trace of a Throwable instance as a String.
+ *
+ * @param t the Throwable instance.
+ * @return the stack trace as a String.
+ */
public static String getStackTrace(final Throwable t) {
final StringWriter sw = new StringWriter();
final PrintWriter pw = new PrintWriter(sw);
From e7f84c3d75e27005caac2ace2dc671fe9bf9b24d Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:59 -0500
Subject: [PATCH 66/83] Javadoc
---
.../java/org/apache/bcel/verifier/statics/Pass1Verifier.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/main/java/org/apache/bcel/verifier/statics/Pass1Verifier.java b/src/main/java/org/apache/bcel/verifier/statics/Pass1Verifier.java
index 154062bc3b..c73b0b8b22 100644
--- a/src/main/java/org/apache/bcel/verifier/statics/Pass1Verifier.java
+++ b/src/main/java/org/apache/bcel/verifier/statics/Pass1Verifier.java
@@ -50,6 +50,7 @@ public final class Pass1Verifier extends PassVerifier {
/**
* Should only be instantiated by a Verifier.
*
+ * @param verifier the verifier.
* @see Verifier
*/
public Pass1Verifier(final Verifier verifier) {
From 9569541f41022ff4e4a13894c9034d48a6b7c362 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:59 -0500
Subject: [PATCH 67/83] Javadoc
---
.../java/org/apache/bcel/verifier/statics/Pass2Verifier.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/main/java/org/apache/bcel/verifier/statics/Pass2Verifier.java b/src/main/java/org/apache/bcel/verifier/statics/Pass2Verifier.java
index 7588cbd598..641df5349c 100644
--- a/src/main/java/org/apache/bcel/verifier/statics/Pass2Verifier.java
+++ b/src/main/java/org/apache/bcel/verifier/statics/Pass2Verifier.java
@@ -1254,6 +1254,7 @@ private static boolean validMethodName(final String name, final boolean allowSta
/**
* Should only be instantiated by a Verifier.
*
+ * @param verifier the verifier.
* @see Verifier
*/
public Pass2Verifier(final Verifier verifier) {
@@ -1449,6 +1450,9 @@ private void finalMethodsAreNotOverridden() {
* pass-2-verified correctly. The method number method_nr is the method you get using
* {@code Repository.lookupClass(myOwner.getClassname()).getMethods()[method_nr];}. You should not add own information.
* Leave that to JustIce.
+ *
+ * @param methodNr the method number.
+ * @return the LocalVariablesInfo object or null.
*/
public LocalVariablesInfo getLocalVariablesInfo(final int methodNr) {
if (verify() != VerificationResult.VR_OK) {
From 01565f8e1aa88345d28fe803d37c64cd9937e64f Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:59 -0500
Subject: [PATCH 68/83] Javadoc
---
.../bcel/verifier/statics/Pass3aVerifier.java | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/bcel/verifier/statics/Pass3aVerifier.java b/src/main/java/org/apache/bcel/verifier/statics/Pass3aVerifier.java
index 885d527767..a2e163229e 100644
--- a/src/main/java/org/apache/bcel/verifier/statics/Pass3aVerifier.java
+++ b/src/main/java/org/apache/bcel/verifier/statics/Pass3aVerifier.java
@@ -895,7 +895,12 @@ private static boolean contains(final int[] ints, final int i) {
*/
private Code code;
- /** Should only be instantiated by a Verifier. */
+ /**
+ * Should only be instantiated by a Verifier.
+ *
+ * @param verifier the verifier.
+ * @param methodNo the method number.
+ */
public Pass3aVerifier(final Verifier verifier, final int methodNo) {
this.verifier = verifier;
this.methodNo = methodNo;
@@ -1069,7 +1074,11 @@ public VerificationResult do_verify() {
}
}
- /** Returns the method number as supplied when instantiating. */
+ /**
+ * Returns the method number as supplied when instantiating.
+ *
+ * @return the method number.
+ */
public int getMethodNo() {
return methodNo;
}
@@ -1196,6 +1205,9 @@ private void pass3StaticInstructionOperandsChecks() {
*
* Returns the String representation of the Object obj; this is obj.toString() if it does not throw any
* RuntimeException, or else it is a string derived only from obj's class name.
+ *
+ * @param obj the object to convert to string.
+ * @return the string representation.
*/
protected String tostring(final Object obj) {
String ret;
From 08f6a27815ea8399bb7926f42b0158cdd748d956 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 08:59:59 -0500
Subject: [PATCH 69/83] Javadoc
---
.../verifier/structurals/OperandStack.java | 31 +++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/src/main/java/org/apache/bcel/verifier/structurals/OperandStack.java b/src/main/java/org/apache/bcel/verifier/structurals/OperandStack.java
index 9b54fc6fc3..cc8465ed3c 100644
--- a/src/main/java/org/apache/bcel/verifier/structurals/OperandStack.java
+++ b/src/main/java/org/apache/bcel/verifier/structurals/OperandStack.java
@@ -40,6 +40,8 @@ public class OperandStack implements Cloneable {
/**
* Creates an empty stack with a maximum of maxStack slots.
+ *
+ * @param maxStack the maximum stack size.
*/
public OperandStack(final int maxStack) {
this.maxStack = maxStack;
@@ -47,6 +49,9 @@ public OperandStack(final int maxStack) {
/**
* Creates an otherwise empty stack with a maximum of maxStack slots and the ObjectType 'obj' at the top.
+ *
+ * @param maxStack the maximum stack size.
+ * @param obj the object type to place at the top.
*/
public OperandStack(final int maxStack, final ObjectType obj) {
this.maxStack = maxStack;
@@ -88,6 +93,7 @@ public boolean equals(final Object o) {
/**
* Returns a (typed!) clone of this.
*
+ * @return a clone of this operand stack.
* @see #clone()
*/
public OperandStack getClone() {
@@ -95,6 +101,8 @@ public OperandStack getClone() {
}
/**
+ * Gets the hash code.
+ *
* @return a hash code value for the object.
*/
@Override
@@ -104,6 +112,8 @@ public int hashCode() {
/**
* Replaces all occurrences of u in this OperandStack instance with an "initialized" ObjectType.
+ *
+ * @param u the uninitialized object type.
*/
public void initializeObject(final UninitializedObjectType u) {
for (int i = 0; i < stack.size(); i++) {
@@ -115,6 +125,8 @@ public void initializeObject(final UninitializedObjectType u) {
/**
* Returns true IFF this OperandStack is empty.
+ *
+ * @return true if empty, false otherwise.
*/
public boolean isEmpty() {
return stack.isEmpty();
@@ -122,6 +134,8 @@ public boolean isEmpty() {
/**
* Returns the number of stack slots this stack can hold.
+ *
+ * @return the maximum stack size.
*/
public int maxStack() {
return this.maxStack;
@@ -130,6 +144,8 @@ public int maxStack() {
/**
* Merges another stack state into this instance's stack state. See the Java Virtual Machine Specification, Second
* Edition, page 146: 4.9.2 for details.
+ *
+ * @param s the stack to merge.
*/
public void merge(final OperandStack s) {
try {
@@ -169,6 +185,8 @@ public void merge(final OperandStack s) {
/**
* Returns the element on top of the stack. The element is not popped off the stack!
+ *
+ * @return the top element.
*/
public Type peek() {
return peek(0);
@@ -177,6 +195,9 @@ public Type peek() {
/**
* Returns the element that's i elements below the top element; that means, iff i==0 the top element is returned. The
* element is not popped off the stack!
+ *
+ * @param i the depth.
+ * @return the element at the specified depth.
*/
public Type peek(final int i) {
return stack.get(size() - i - 1);
@@ -184,6 +205,8 @@ public Type peek(final int i) {
/**
* Returns the element on top of the stack. The element is popped off the stack.
+ *
+ * @return the popped element.
*/
public Type pop() {
return stack.remove(size() - 1);
@@ -192,6 +215,7 @@ public Type pop() {
/**
* Pops i elements off the stack. Always returns null.
*
+ * @param count the number of elements to pop.
* @return Always returns null.
*/
public Type pop(final int count) {
@@ -203,6 +227,8 @@ public Type pop(final int count) {
/**
* Pushes a Type object onto the stack.
+ *
+ * @param type the type to push.
*/
public void push(final Type type) {
if (type == null) {
@@ -219,6 +245,8 @@ public void push(final Type type) {
/**
* Returns the size of this OperandStack; that means, how many Type objects there are.
+ *
+ * @return the stack size.
*/
public int size() {
return stack.size();
@@ -227,6 +255,7 @@ public int size() {
/**
* Returns the number of stack slots used.
*
+ * @return the number of slots used.
* @see #maxStack()
*/
public int slotsUsed() {
@@ -243,6 +272,8 @@ public int slotsUsed() {
/**
* Returns a String representation of this OperandStack instance.
+ *
+ * @return string representation.
*/
@Override
public String toString() {
From 69eb1bf7967c15dc2878afc9b1bdfbc8ebead3ed Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 09:00:00 -0500
Subject: [PATCH 70/83] Javadoc
---
.../apache/bcel/verifier/structurals/Pass3bVerifier.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/bcel/verifier/structurals/Pass3bVerifier.java b/src/main/java/org/apache/bcel/verifier/structurals/Pass3bVerifier.java
index 0865362d78..850faca7fc 100644
--- a/src/main/java/org/apache/bcel/verifier/structurals/Pass3bVerifier.java
+++ b/src/main/java/org/apache/bcel/verifier/structurals/Pass3bVerifier.java
@@ -149,6 +149,8 @@ public int size() {
/**
* This class should only be instantiated by a Verifier.
*
+ * @param myOwner the verifier that owns this Pass3bVerifier.
+ * @param methodNo the method number.
* @see org.apache.bcel.verifier.Verifier
*/
public Pass3bVerifier(final Verifier myOwner, final int methodNo) {
@@ -405,7 +407,11 @@ public VerificationResult do_verify() {
return VerificationResult.VR_OK;
}
- /** Returns the method number as supplied when instantiating. */
+ /**
+ * Returns the method number as supplied when instantiating.
+ *
+ * @return the method number.
+ */
public int getMethodNo() {
return methodNo;
}
From ed6e196674eaf358c21f9d4d7fa1846cbd89653b Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 09:00:00 -0500
Subject: [PATCH 71/83] Javadoc
---
.../org/apache/bcel/verifier/structurals/Subroutines.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/main/java/org/apache/bcel/verifier/structurals/Subroutines.java b/src/main/java/org/apache/bcel/verifier/structurals/Subroutines.java
index 870456f33c..8a73bf6257 100644
--- a/src/main/java/org/apache/bcel/verifier/structurals/Subroutines.java
+++ b/src/main/java/org/apache/bcel/verifier/structurals/Subroutines.java
@@ -551,6 +551,8 @@ public Subroutines(final MethodGen mg, final boolean enableJustIceCheck) {
* Returns the Subroutine object associated with the given leader (that is, the first instruction of the subroutine).
* You must not use this to get the top-level instructions modeled as a Subroutine object.
*
+ * @param leader the leader instruction handle.
+ * @return the Subroutine object.
* @see #getTopLevel()
*/
public Subroutine getSubroutine(final InstructionHandle leader) {
@@ -572,6 +574,7 @@ public Subroutine getSubroutine(final InstructionHandle leader) {
* object. It is a special Subroutine object where you must not invoke getEnteringJsrInstructions() or
* getLeavingRET().
*
+ * @return the top-level Subroutine.
* @see Subroutine#getEnteringJsrInstructions()
* @see Subroutine#getLeavingRET()
*/
@@ -611,6 +614,8 @@ private void noRecursiveCalls(final Subroutine sub, final Set set) {
* using getSubroutine(InstructionHandle). Returns 'null' if the given InstructionHandle lies in so-called 'dead code',
* for example code that can never be executed.
*
+ * @param any the instruction handle.
+ * @return the Subroutine object or null.
* @see #getSubroutine(InstructionHandle)
* @see #getTopLevel()
*/
From 7151c5dff42d2ef265bcc9b2cd73c95b16779481 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 09:00:55 -0500
Subject: [PATCH 72/83] Enable Javadoc doclint in GH CI
---
.github/workflows/maven.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 647479cfcb..9ed6a6b143 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -54,4 +54,4 @@ jobs:
distribution: ${{ runner.os == 'macOS' && matrix.java == '8' && 'zulu' || 'temurin' }}
java-version: ${{ matrix.java }}
- name: Build with Maven
- run: mvn --errors --show-version --batch-mode --no-transfer-progress -DtrimStackTrace=false -Ddoclint=none
+ run: mvn --errors --show-version --batch-mode --no-transfer-progress -DtrimStackTrace=false
From a95cf90bb0bb5bd783d83312778dcb657398ca08 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 09:03:00 -0500
Subject: [PATCH 73/83] Use lower case Javadoc tags
---
src/examples/HelloWorldBuilder.java | 4 ++--
src/main/java/org/apache/bcel/generic/AALOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/AASTORE.java | 4 ++--
src/main/java/org/apache/bcel/generic/ACONST_NULL.java | 4 ++--
src/main/java/org/apache/bcel/generic/ALOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/ANEWARRAY.java | 4 ++--
src/main/java/org/apache/bcel/generic/ARETURN.java | 4 ++--
src/main/java/org/apache/bcel/generic/ARRAYLENGTH.java | 4 ++--
src/main/java/org/apache/bcel/generic/ASTORE.java | 4 ++--
src/main/java/org/apache/bcel/generic/ATHROW.java | 4 ++--
src/main/java/org/apache/bcel/generic/BALOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/BASTORE.java | 4 ++--
src/main/java/org/apache/bcel/generic/BIPUSH.java | 4 ++--
src/main/java/org/apache/bcel/generic/CALOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/CASTORE.java | 4 ++--
src/main/java/org/apache/bcel/generic/CHECKCAST.java | 4 ++--
src/main/java/org/apache/bcel/generic/D2F.java | 4 ++--
src/main/java/org/apache/bcel/generic/D2I.java | 4 ++--
src/main/java/org/apache/bcel/generic/D2L.java | 4 ++--
src/main/java/org/apache/bcel/generic/DADD.java | 4 ++--
src/main/java/org/apache/bcel/generic/DALOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/DASTORE.java | 4 ++--
src/main/java/org/apache/bcel/generic/DCMPG.java | 4 ++--
src/main/java/org/apache/bcel/generic/DCMPL.java | 4 ++--
src/main/java/org/apache/bcel/generic/DCONST.java | 4 ++--
src/main/java/org/apache/bcel/generic/DDIV.java | 4 ++--
src/main/java/org/apache/bcel/generic/DLOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/DMUL.java | 4 ++--
src/main/java/org/apache/bcel/generic/DNEG.java | 4 ++--
src/main/java/org/apache/bcel/generic/DREM.java | 4 ++--
src/main/java/org/apache/bcel/generic/DRETURN.java | 4 ++--
src/main/java/org/apache/bcel/generic/DSTORE.java | 2 +-
src/main/java/org/apache/bcel/generic/DSUB.java | 4 ++--
src/main/java/org/apache/bcel/generic/DUP.java | 4 ++--
src/main/java/org/apache/bcel/generic/DUP2.java | 4 ++--
src/main/java/org/apache/bcel/generic/DUP2_X1.java | 4 ++--
src/main/java/org/apache/bcel/generic/DUP2_X2.java | 4 ++--
src/main/java/org/apache/bcel/generic/DUP_X1.java | 4 ++--
src/main/java/org/apache/bcel/generic/DUP_X2.java | 4 ++--
src/main/java/org/apache/bcel/generic/F2D.java | 4 ++--
src/main/java/org/apache/bcel/generic/F2I.java | 4 ++--
src/main/java/org/apache/bcel/generic/F2L.java | 4 ++--
src/main/java/org/apache/bcel/generic/FADD.java | 4 ++--
src/main/java/org/apache/bcel/generic/FALOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/FASTORE.java | 4 ++--
src/main/java/org/apache/bcel/generic/FCMPG.java | 4 ++--
src/main/java/org/apache/bcel/generic/FCMPL.java | 4 ++--
src/main/java/org/apache/bcel/generic/FCONST.java | 4 ++--
src/main/java/org/apache/bcel/generic/FDIV.java | 4 ++--
src/main/java/org/apache/bcel/generic/FLOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/FMUL.java | 4 ++--
src/main/java/org/apache/bcel/generic/FNEG.java | 4 ++--
src/main/java/org/apache/bcel/generic/FREM.java | 4 ++--
src/main/java/org/apache/bcel/generic/FRETURN.java | 4 ++--
src/main/java/org/apache/bcel/generic/FSTORE.java | 4 ++--
src/main/java/org/apache/bcel/generic/FSUB.java | 4 ++--
src/main/java/org/apache/bcel/generic/GETFIELD.java | 8 ++++----
src/main/java/org/apache/bcel/generic/GETSTATIC.java | 8 ++++----
src/main/java/org/apache/bcel/generic/I2B.java | 4 ++--
src/main/java/org/apache/bcel/generic/I2C.java | 4 ++--
src/main/java/org/apache/bcel/generic/I2D.java | 4 ++--
src/main/java/org/apache/bcel/generic/I2F.java | 4 ++--
src/main/java/org/apache/bcel/generic/I2L.java | 4 ++--
src/main/java/org/apache/bcel/generic/I2S.java | 4 ++--
src/main/java/org/apache/bcel/generic/IADD.java | 4 ++--
src/main/java/org/apache/bcel/generic/IALOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/IAND.java | 4 ++--
src/main/java/org/apache/bcel/generic/IASTORE.java | 4 ++--
src/main/java/org/apache/bcel/generic/ICONST.java | 4 ++--
src/main/java/org/apache/bcel/generic/IDIV.java | 4 ++--
src/main/java/org/apache/bcel/generic/IFEQ.java | 4 ++--
src/main/java/org/apache/bcel/generic/IFGE.java | 4 ++--
src/main/java/org/apache/bcel/generic/IFGT.java | 4 ++--
src/main/java/org/apache/bcel/generic/IFLE.java | 4 ++--
src/main/java/org/apache/bcel/generic/IFLT.java | 4 ++--
src/main/java/org/apache/bcel/generic/IFNE.java | 4 ++--
src/main/java/org/apache/bcel/generic/IFNONNULL.java | 4 ++--
src/main/java/org/apache/bcel/generic/IFNULL.java | 4 ++--
src/main/java/org/apache/bcel/generic/IF_ACMPEQ.java | 4 ++--
src/main/java/org/apache/bcel/generic/IF_ACMPNE.java | 4 ++--
src/main/java/org/apache/bcel/generic/IF_ICMPEQ.java | 4 ++--
src/main/java/org/apache/bcel/generic/IF_ICMPGE.java | 4 ++--
src/main/java/org/apache/bcel/generic/IF_ICMPGT.java | 4 ++--
src/main/java/org/apache/bcel/generic/IF_ICMPLE.java | 4 ++--
src/main/java/org/apache/bcel/generic/IF_ICMPLT.java | 4 ++--
src/main/java/org/apache/bcel/generic/IF_ICMPNE.java | 4 ++--
src/main/java/org/apache/bcel/generic/ILOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/IMUL.java | 4 ++--
src/main/java/org/apache/bcel/generic/INEG.java | 4 ++--
src/main/java/org/apache/bcel/generic/INSTANCEOF.java | 4 ++--
.../java/org/apache/bcel/generic/INVOKEINTERFACE.java | 4 ++--
src/main/java/org/apache/bcel/generic/INVOKESPECIAL.java | 4 ++--
src/main/java/org/apache/bcel/generic/INVOKESTATIC.java | 4 ++--
src/main/java/org/apache/bcel/generic/INVOKEVIRTUAL.java | 4 ++--
src/main/java/org/apache/bcel/generic/IOR.java | 4 ++--
src/main/java/org/apache/bcel/generic/IREM.java | 4 ++--
src/main/java/org/apache/bcel/generic/IRETURN.java | 4 ++--
src/main/java/org/apache/bcel/generic/ISHL.java | 4 ++--
src/main/java/org/apache/bcel/generic/ISHR.java | 4 ++--
src/main/java/org/apache/bcel/generic/ISTORE.java | 4 ++--
src/main/java/org/apache/bcel/generic/ISUB.java | 4 ++--
src/main/java/org/apache/bcel/generic/IUSHR.java | 4 ++--
src/main/java/org/apache/bcel/generic/IXOR.java | 4 ++--
src/main/java/org/apache/bcel/generic/L2D.java | 4 ++--
src/main/java/org/apache/bcel/generic/L2F.java | 4 ++--
src/main/java/org/apache/bcel/generic/L2I.java | 4 ++--
src/main/java/org/apache/bcel/generic/LADD.java | 4 ++--
src/main/java/org/apache/bcel/generic/LALOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/LAND.java | 4 ++--
src/main/java/org/apache/bcel/generic/LASTORE.java | 4 ++--
src/main/java/org/apache/bcel/generic/LCMP.java | 4 ++--
src/main/java/org/apache/bcel/generic/LCONST.java | 4 ++--
src/main/java/org/apache/bcel/generic/LDC.java | 4 ++--
src/main/java/org/apache/bcel/generic/LDC2_W.java | 4 ++--
src/main/java/org/apache/bcel/generic/LDC_W.java | 4 ++--
src/main/java/org/apache/bcel/generic/LDIV.java | 4 ++--
src/main/java/org/apache/bcel/generic/LLOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/LMUL.java | 4 ++--
src/main/java/org/apache/bcel/generic/LNEG.java | 4 ++--
src/main/java/org/apache/bcel/generic/LOR.java | 4 ++--
src/main/java/org/apache/bcel/generic/LREM.java | 4 ++--
src/main/java/org/apache/bcel/generic/LRETURN.java | 4 ++--
src/main/java/org/apache/bcel/generic/LSHL.java | 4 ++--
src/main/java/org/apache/bcel/generic/LSHR.java | 4 ++--
src/main/java/org/apache/bcel/generic/LSTORE.java | 4 ++--
src/main/java/org/apache/bcel/generic/LSUB.java | 4 ++--
src/main/java/org/apache/bcel/generic/LUSHR.java | 4 ++--
src/main/java/org/apache/bcel/generic/LXOR.java | 4 ++--
src/main/java/org/apache/bcel/generic/MONITORENTER.java | 4 ++--
src/main/java/org/apache/bcel/generic/MONITOREXIT.java | 4 ++--
src/main/java/org/apache/bcel/generic/MULTIANEWARRAY.java | 4 ++--
src/main/java/org/apache/bcel/generic/NEW.java | 4 ++--
src/main/java/org/apache/bcel/generic/NEWARRAY.java | 4 ++--
src/main/java/org/apache/bcel/generic/POP.java | 4 ++--
src/main/java/org/apache/bcel/generic/POP2.java | 4 ++--
src/main/java/org/apache/bcel/generic/PUTFIELD.java | 8 ++++----
src/main/java/org/apache/bcel/generic/PUTSTATIC.java | 8 ++++----
src/main/java/org/apache/bcel/generic/RET.java | 4 ++--
src/main/java/org/apache/bcel/generic/RETURN.java | 4 ++--
src/main/java/org/apache/bcel/generic/SALOAD.java | 4 ++--
src/main/java/org/apache/bcel/generic/SASTORE.java | 4 ++--
src/main/java/org/apache/bcel/generic/SIPUSH.java | 4 ++--
src/main/java/org/apache/bcel/generic/SWAP.java | 4 ++--
143 files changed, 293 insertions(+), 293 deletions(-)
diff --git a/src/examples/HelloWorldBuilder.java b/src/examples/HelloWorldBuilder.java
index e0e1d17830..e549529078 100644
--- a/src/examples/HelloWorldBuilder.java
+++ b/src/examples/HelloWorldBuilder.java
@@ -39,7 +39,7 @@
/**
* Create HelloWorld class:
*
- *
+ *
* import java.io.*;
*
* public class HelloWorld {
@@ -58,7 +58,7 @@
* System.out.println("Hello, " + name);
* }
* }
- *
+ *
*/
public class HelloWorldBuilder {
public static void main(final String[] argv) {
diff --git a/src/main/java/org/apache/bcel/generic/AALOAD.java b/src/main/java/org/apache/bcel/generic/AALOAD.java
index 30e71e1c79..8a9c9fb8e6 100644
--- a/src/main/java/org/apache/bcel/generic/AALOAD.java
+++ b/src/main/java/org/apache/bcel/generic/AALOAD.java
@@ -21,9 +21,9 @@
/**
* AALOAD - Load reference from array
*
- *
+ *
* Stack: ..., arrayref, index -> value
- *
+ *
*/
public class AALOAD extends ArrayInstruction implements StackProducer {
diff --git a/src/main/java/org/apache/bcel/generic/AASTORE.java b/src/main/java/org/apache/bcel/generic/AASTORE.java
index 58e708a3e0..d2e0a82b25 100644
--- a/src/main/java/org/apache/bcel/generic/AASTORE.java
+++ b/src/main/java/org/apache/bcel/generic/AASTORE.java
@@ -21,9 +21,9 @@
/**
* AASTORE - Store into reference array
*
- *
+ *
* Stack: ..., arrayref, index, value -> ...
- *
+ *
*/
public class AASTORE extends ArrayInstruction implements StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/ACONST_NULL.java b/src/main/java/org/apache/bcel/generic/ACONST_NULL.java
index 0b72e344d2..1f10ff19bf 100644
--- a/src/main/java/org/apache/bcel/generic/ACONST_NULL.java
+++ b/src/main/java/org/apache/bcel/generic/ACONST_NULL.java
@@ -21,9 +21,9 @@
/**
* ACONST_NULL - Push null reference
*
- *
+ *
* Stack: ... -> ..., null
- *
+ *
*/
public class ACONST_NULL extends Instruction implements PushInstruction, TypedInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/ALOAD.java b/src/main/java/org/apache/bcel/generic/ALOAD.java
index 7e7c744274..07e863b60e 100644
--- a/src/main/java/org/apache/bcel/generic/ALOAD.java
+++ b/src/main/java/org/apache/bcel/generic/ALOAD.java
@@ -21,9 +21,9 @@
/**
* ALOAD - Load reference from local variable
*
- *
+ *
* Stack: ... -> ..., objectref
- *
+ *
*/
public class ALOAD extends LoadInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/ANEWARRAY.java b/src/main/java/org/apache/bcel/generic/ANEWARRAY.java
index ae8059b96a..81ac3721d9 100644
--- a/src/main/java/org/apache/bcel/generic/ANEWARRAY.java
+++ b/src/main/java/org/apache/bcel/generic/ANEWARRAY.java
@@ -23,9 +23,9 @@
/**
* ANEWARRAY - Create new array of references
*
- *
+ *
* Stack: ..., count -> ..., arrayref
- *
+ *
*/
public class ANEWARRAY extends CPInstruction implements LoadClass, AllocationInstruction, ExceptionThrower, StackConsumer, StackProducer {
diff --git a/src/main/java/org/apache/bcel/generic/ARETURN.java b/src/main/java/org/apache/bcel/generic/ARETURN.java
index 4fc09639b2..3dc98dc3d4 100644
--- a/src/main/java/org/apache/bcel/generic/ARETURN.java
+++ b/src/main/java/org/apache/bcel/generic/ARETURN.java
@@ -21,9 +21,9 @@
/**
* ARETURN - Return reference from method
*
- *
+ *
* Stack: ..., objectref -> <empty>
- *
+ *
*/
public class ARETURN extends ReturnInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/ARRAYLENGTH.java b/src/main/java/org/apache/bcel/generic/ARRAYLENGTH.java
index 4ba0d9fc69..9a1017129d 100644
--- a/src/main/java/org/apache/bcel/generic/ARRAYLENGTH.java
+++ b/src/main/java/org/apache/bcel/generic/ARRAYLENGTH.java
@@ -23,9 +23,9 @@
/**
* ARRAYLENGTH - Get length of array
*
- *
+ *
* Stack: ..., arrayref -> ..., length
- *
+ *
*/
public class ARRAYLENGTH extends Instruction implements ExceptionThrower, StackProducer, StackConsumer /* since 6.0 */ {
diff --git a/src/main/java/org/apache/bcel/generic/ASTORE.java b/src/main/java/org/apache/bcel/generic/ASTORE.java
index 95c8dffe19..a8d5cb5f61 100644
--- a/src/main/java/org/apache/bcel/generic/ASTORE.java
+++ b/src/main/java/org/apache/bcel/generic/ASTORE.java
@@ -21,9 +21,9 @@
/**
* ASTORE - Store reference into local variable
*
- *
+ *
* Stack ..., objectref -> ...
- *
+ *
*/
public class ASTORE extends StoreInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/ATHROW.java b/src/main/java/org/apache/bcel/generic/ATHROW.java
index af0ef99500..9f6cb2af24 100644
--- a/src/main/java/org/apache/bcel/generic/ATHROW.java
+++ b/src/main/java/org/apache/bcel/generic/ATHROW.java
@@ -23,9 +23,9 @@
/**
* ATHROW - Throw exception
*
- *
+ *
* Stack: ..., objectref -> objectref
- *
+ *
*/
public class ATHROW extends Instruction implements UnconditionalBranch, ExceptionThrower, StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/BALOAD.java b/src/main/java/org/apache/bcel/generic/BALOAD.java
index 8855a66694..6f3156e162 100644
--- a/src/main/java/org/apache/bcel/generic/BALOAD.java
+++ b/src/main/java/org/apache/bcel/generic/BALOAD.java
@@ -21,9 +21,9 @@
/**
* BALOAD - Load byte or boolean from array
*
- *
+ *
* Stack: ..., arrayref, index -> ..., value
- *
+ *
*/
public class BALOAD extends ArrayInstruction implements StackProducer {
diff --git a/src/main/java/org/apache/bcel/generic/BASTORE.java b/src/main/java/org/apache/bcel/generic/BASTORE.java
index f33641cc7a..1502beeafa 100644
--- a/src/main/java/org/apache/bcel/generic/BASTORE.java
+++ b/src/main/java/org/apache/bcel/generic/BASTORE.java
@@ -21,9 +21,9 @@
/**
* BASTORE - Store into byte or boolean array
*
- *
+ *
* Stack: ..., arrayref, index, value -> ...
- *
+ *
*/
public class BASTORE extends ArrayInstruction implements StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/BIPUSH.java b/src/main/java/org/apache/bcel/generic/BIPUSH.java
index 59e12d3fc5..6e3794dbf2 100644
--- a/src/main/java/org/apache/bcel/generic/BIPUSH.java
+++ b/src/main/java/org/apache/bcel/generic/BIPUSH.java
@@ -26,9 +26,9 @@
/**
* BIPUSH - Push byte on stack
*
- *
+ *
* Stack: ... -> ..., value
- *
+ *
*/
public class BIPUSH extends Instruction implements ConstantPushInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/CALOAD.java b/src/main/java/org/apache/bcel/generic/CALOAD.java
index 7fccd65870..0606e3deed 100644
--- a/src/main/java/org/apache/bcel/generic/CALOAD.java
+++ b/src/main/java/org/apache/bcel/generic/CALOAD.java
@@ -21,9 +21,9 @@
/**
* CALOAD - Load char from array
*
- *
+ *
* Stack: ..., arrayref, index -> ..., value
- *
+ *
*/
public class CALOAD extends ArrayInstruction implements StackProducer {
diff --git a/src/main/java/org/apache/bcel/generic/CASTORE.java b/src/main/java/org/apache/bcel/generic/CASTORE.java
index be78c2f13a..bb8c5f1f4c 100644
--- a/src/main/java/org/apache/bcel/generic/CASTORE.java
+++ b/src/main/java/org/apache/bcel/generic/CASTORE.java
@@ -21,9 +21,9 @@
/**
* CASTORE - Store into char array
*
- *
+ *
* Stack: ..., arrayref, index, value -> ...
- *
+ *
*/
public class CASTORE extends ArrayInstruction implements StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/CHECKCAST.java b/src/main/java/org/apache/bcel/generic/CHECKCAST.java
index 6d31fed26e..61455991c4 100644
--- a/src/main/java/org/apache/bcel/generic/CHECKCAST.java
+++ b/src/main/java/org/apache/bcel/generic/CHECKCAST.java
@@ -23,9 +23,9 @@
/**
* CHECKCAST - Check whether object is of given type
*
- *
+ *
* Stack: ..., objectref -> ..., objectref
- *
+ *
*/
public class CHECKCAST extends CPInstruction implements LoadClass, ExceptionThrower, StackProducer, StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/D2F.java b/src/main/java/org/apache/bcel/generic/D2F.java
index 5159c0f2a5..54e749cd76 100644
--- a/src/main/java/org/apache/bcel/generic/D2F.java
+++ b/src/main/java/org/apache/bcel/generic/D2F.java
@@ -21,9 +21,9 @@
/**
* D2F - Convert double to float
*
- *
+ *
* Stack: ..., value.word1, value.word2 -> ..., result
- *
+ *
*/
public class D2F extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/D2I.java b/src/main/java/org/apache/bcel/generic/D2I.java
index 381af9df51..5babd72cf6 100644
--- a/src/main/java/org/apache/bcel/generic/D2I.java
+++ b/src/main/java/org/apache/bcel/generic/D2I.java
@@ -21,9 +21,9 @@
/**
* D2I - Convert double to int
*
- *
+ *
* Stack: ..., value.word1, value.word2 -> ..., result
- *
+ *
*/
public class D2I extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/D2L.java b/src/main/java/org/apache/bcel/generic/D2L.java
index 72d23b6dc1..0cdeb3bca1 100644
--- a/src/main/java/org/apache/bcel/generic/D2L.java
+++ b/src/main/java/org/apache/bcel/generic/D2L.java
@@ -21,9 +21,9 @@
/**
* D2L - Convert double to long
*
- *
+ *
* Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
- *
+ *
*/
public class D2L extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/DADD.java b/src/main/java/org/apache/bcel/generic/DADD.java
index fbdfdd4f06..f6f5ac6482 100644
--- a/src/main/java/org/apache/bcel/generic/DADD.java
+++ b/src/main/java/org/apache/bcel/generic/DADD.java
@@ -21,9 +21,9 @@
/**
* DADD - Add doubles
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- *
+ *
*
* ..., result.word1, result1.word2
*/
diff --git a/src/main/java/org/apache/bcel/generic/DALOAD.java b/src/main/java/org/apache/bcel/generic/DALOAD.java
index f16f7d256a..270a714bdb 100644
--- a/src/main/java/org/apache/bcel/generic/DALOAD.java
+++ b/src/main/java/org/apache/bcel/generic/DALOAD.java
@@ -21,9 +21,9 @@
/**
* DALOAD - Load double from array
*
- *
+ *
* Stack: ..., arrayref, index -> ..., result.word1, result.word2
- *
+ *
*/
public class DALOAD extends ArrayInstruction implements StackProducer {
diff --git a/src/main/java/org/apache/bcel/generic/DASTORE.java b/src/main/java/org/apache/bcel/generic/DASTORE.java
index 3e3e7caaca..ef93a2443c 100644
--- a/src/main/java/org/apache/bcel/generic/DASTORE.java
+++ b/src/main/java/org/apache/bcel/generic/DASTORE.java
@@ -21,9 +21,9 @@
/**
* DASTORE - Store into double array
*
- *
+ *
* Stack: ..., arrayref, index, value.word1, value.word2 -> ...
- *
+ *
*/
public class DASTORE extends ArrayInstruction implements StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/DCMPG.java b/src/main/java/org/apache/bcel/generic/DCMPG.java
index 40dbfc6dba..f3edc24362 100644
--- a/src/main/java/org/apache/bcel/generic/DCMPG.java
+++ b/src/main/java/org/apache/bcel/generic/DCMPG.java
@@ -21,9 +21,9 @@
/**
* DCMPG - Compare doubles: value1 > value2
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result
- *
+ *
*/
public class DCMPG extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/DCMPL.java b/src/main/java/org/apache/bcel/generic/DCMPL.java
index eef1a76c86..edc2f040ed 100644
--- a/src/main/java/org/apache/bcel/generic/DCMPL.java
+++ b/src/main/java/org/apache/bcel/generic/DCMPL.java
@@ -21,9 +21,9 @@
/**
* DCMPL - Compare doubles: value1 < value2
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result
- *
+ *
*/
public class DCMPL extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/DCONST.java b/src/main/java/org/apache/bcel/generic/DCONST.java
index f945a3e8ff..2655f311f3 100644
--- a/src/main/java/org/apache/bcel/generic/DCONST.java
+++ b/src/main/java/org/apache/bcel/generic/DCONST.java
@@ -21,9 +21,9 @@
/**
* DCONST - Push 0.0 or 1.0, other values cause an exception
*
- *
+ *
* Stack: ... -> ...,
- *
+ *
*/
public class DCONST extends Instruction implements ConstantPushInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/DDIV.java b/src/main/java/org/apache/bcel/generic/DDIV.java
index 0fd033102b..c0cd496efa 100644
--- a/src/main/java/org/apache/bcel/generic/DDIV.java
+++ b/src/main/java/org/apache/bcel/generic/DDIV.java
@@ -21,9 +21,9 @@
/**
* DDIV - Divide doubles
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- *
+ *
*
* ..., result.word1, result.word2
*/
diff --git a/src/main/java/org/apache/bcel/generic/DLOAD.java b/src/main/java/org/apache/bcel/generic/DLOAD.java
index 23b11b4301..81884511ea 100644
--- a/src/main/java/org/apache/bcel/generic/DLOAD.java
+++ b/src/main/java/org/apache/bcel/generic/DLOAD.java
@@ -21,9 +21,9 @@
/**
* DLOAD - Load double from local variable
*
- *
+ *
* Stack ... -> ..., result.word1, result.word2
- *
+ *
*/
public class DLOAD extends LoadInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/DMUL.java b/src/main/java/org/apache/bcel/generic/DMUL.java
index 122c08ae88..0dc27936b1 100644
--- a/src/main/java/org/apache/bcel/generic/DMUL.java
+++ b/src/main/java/org/apache/bcel/generic/DMUL.java
@@ -21,9 +21,9 @@
/**
* DMUL - Multiply doubles
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- *
+ *
*
* ..., result.word1, result.word2
*/
diff --git a/src/main/java/org/apache/bcel/generic/DNEG.java b/src/main/java/org/apache/bcel/generic/DNEG.java
index 44424b388d..82b48bf741 100644
--- a/src/main/java/org/apache/bcel/generic/DNEG.java
+++ b/src/main/java/org/apache/bcel/generic/DNEG.java
@@ -21,9 +21,9 @@
/**
* DNEG - Negate double
*
- *
+ *
* Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
- *
+ *
*/
public class DNEG extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/DREM.java b/src/main/java/org/apache/bcel/generic/DREM.java
index b827ed7b04..e0640ab335 100644
--- a/src/main/java/org/apache/bcel/generic/DREM.java
+++ b/src/main/java/org/apache/bcel/generic/DREM.java
@@ -21,9 +21,9 @@
/**
* DREM - Remainder of doubles
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- *
+ *
*
* ..., result.word1, result.word2
*/
diff --git a/src/main/java/org/apache/bcel/generic/DRETURN.java b/src/main/java/org/apache/bcel/generic/DRETURN.java
index caa0d904cc..8990ed570a 100644
--- a/src/main/java/org/apache/bcel/generic/DRETURN.java
+++ b/src/main/java/org/apache/bcel/generic/DRETURN.java
@@ -21,9 +21,9 @@
/**
* DRETURN - Return double from method
*
- *
+ *
* Stack: ..., value.word1, value.word2 -> <empty>
- *
+ *
*/
public class DRETURN extends ReturnInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/DSTORE.java b/src/main/java/org/apache/bcel/generic/DSTORE.java
index 01719f8659..e6615abfcc 100644
--- a/src/main/java/org/apache/bcel/generic/DSTORE.java
+++ b/src/main/java/org/apache/bcel/generic/DSTORE.java
@@ -23,7 +23,7 @@
*
*
* Stack: ..., value.word1, value.word2 -> ...
- *
+ *
*/
public class DSTORE extends StoreInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/DSUB.java b/src/main/java/org/apache/bcel/generic/DSUB.java
index b8109670c7..1eb54f53e9 100644
--- a/src/main/java/org/apache/bcel/generic/DSUB.java
+++ b/src/main/java/org/apache/bcel/generic/DSUB.java
@@ -21,9 +21,9 @@
/**
* DSUB - Substract doubles
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- *
+ *
*
* ..., result.word1, result.word2
*/
diff --git a/src/main/java/org/apache/bcel/generic/DUP.java b/src/main/java/org/apache/bcel/generic/DUP.java
index 1e75dde0b9..b72cb8f09f 100644
--- a/src/main/java/org/apache/bcel/generic/DUP.java
+++ b/src/main/java/org/apache/bcel/generic/DUP.java
@@ -21,9 +21,9 @@
/**
* DUP - Duplicate top operand stack word
*
- *
+ *
* Stack: ..., word -> ..., word, word
- *
+ *
*/
public class DUP extends StackInstruction implements PushInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/DUP2.java b/src/main/java/org/apache/bcel/generic/DUP2.java
index 04085cd6a4..a49ae9d66d 100644
--- a/src/main/java/org/apache/bcel/generic/DUP2.java
+++ b/src/main/java/org/apache/bcel/generic/DUP2.java
@@ -21,9 +21,9 @@
/**
* DUP2 - Duplicate two top operand stack words
*
- *
+ *
* Stack: ..., word2, word1 -> ..., word2, word1, word2, word1
- *
+ *
*/
public class DUP2 extends StackInstruction implements PushInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/DUP2_X1.java b/src/main/java/org/apache/bcel/generic/DUP2_X1.java
index 0d0c12c6d9..198f8b4ccc 100644
--- a/src/main/java/org/apache/bcel/generic/DUP2_X1.java
+++ b/src/main/java/org/apache/bcel/generic/DUP2_X1.java
@@ -21,9 +21,9 @@
/**
* DUP2_X1 - Duplicate two top operand stack words and put three down
*
- *
+ *
* Stack: ..., word3, word2, word1 -> ..., word2, word1, word3, word2, word1
- *
+ *
*/
public class DUP2_X1 extends StackInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/DUP2_X2.java b/src/main/java/org/apache/bcel/generic/DUP2_X2.java
index 748f2df225..7651156d3f 100644
--- a/src/main/java/org/apache/bcel/generic/DUP2_X2.java
+++ b/src/main/java/org/apache/bcel/generic/DUP2_X2.java
@@ -21,9 +21,9 @@
/**
* DUP2_X2 - Duplicate two top operand stack words and put four down
*
- *
+ *
* Stack: ..., word4, word3, word2, word1 -> ..., word2, word1, word4, word3, word2, word1
- *
+ *
*/
public class DUP2_X2 extends StackInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/DUP_X1.java b/src/main/java/org/apache/bcel/generic/DUP_X1.java
index f6b3d0e095..5ee6352022 100644
--- a/src/main/java/org/apache/bcel/generic/DUP_X1.java
+++ b/src/main/java/org/apache/bcel/generic/DUP_X1.java
@@ -21,9 +21,9 @@
/**
* DUP_X1 - Duplicate top operand stack word and put two down
*
- *
+ *
* Stack: ..., word2, word1 -> ..., word1, word2, word1
- *
+ *
*/
public class DUP_X1 extends StackInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/DUP_X2.java b/src/main/java/org/apache/bcel/generic/DUP_X2.java
index 4e40d1c536..1a3e1ddf8c 100644
--- a/src/main/java/org/apache/bcel/generic/DUP_X2.java
+++ b/src/main/java/org/apache/bcel/generic/DUP_X2.java
@@ -21,9 +21,9 @@
/**
* DUP_X2 - Duplicate top operand stack word and put three down
*
- *
+ *
* Stack: ..., word3, word2, word1 -> ..., word1, word3, word2, word1
- *
+ *
*/
public class DUP_X2 extends StackInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/F2D.java b/src/main/java/org/apache/bcel/generic/F2D.java
index 1bcd74f89d..b5d1f61e0d 100644
--- a/src/main/java/org/apache/bcel/generic/F2D.java
+++ b/src/main/java/org/apache/bcel/generic/F2D.java
@@ -21,9 +21,9 @@
/**
* F2D - Convert float to double
*
- *
+ *
* Stack: ..., value -> ..., result.word1, result.word2
- *
+ *
*/
public class F2D extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/F2I.java b/src/main/java/org/apache/bcel/generic/F2I.java
index 9f067c1836..c4dcba8572 100644
--- a/src/main/java/org/apache/bcel/generic/F2I.java
+++ b/src/main/java/org/apache/bcel/generic/F2I.java
@@ -21,9 +21,9 @@
/**
* F2I - Convert float to int
*
- *
+ *
* Stack: ..., value -> ..., result
- *
+ *
*/
public class F2I extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/F2L.java b/src/main/java/org/apache/bcel/generic/F2L.java
index a2f00a2410..e04ce8c228 100644
--- a/src/main/java/org/apache/bcel/generic/F2L.java
+++ b/src/main/java/org/apache/bcel/generic/F2L.java
@@ -21,9 +21,9 @@
/**
* F2L - Convert float to long
*
- *
+ *
* Stack: ..., value -> ..., result.word1, result.word2
- *
+ *
*/
public class F2L extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/FADD.java b/src/main/java/org/apache/bcel/generic/FADD.java
index 1729966f46..63f755ab1d 100644
--- a/src/main/java/org/apache/bcel/generic/FADD.java
+++ b/src/main/java/org/apache/bcel/generic/FADD.java
@@ -21,9 +21,9 @@
/**
* FADD - Add floats
*
- *
+ *
* Stack: ..., value1, value2 -> result
- *
+ *
*/
public class FADD extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/FALOAD.java b/src/main/java/org/apache/bcel/generic/FALOAD.java
index 606738e46c..a9dbe0c3c1 100644
--- a/src/main/java/org/apache/bcel/generic/FALOAD.java
+++ b/src/main/java/org/apache/bcel/generic/FALOAD.java
@@ -21,9 +21,9 @@
/**
* FALOAD - Load float from array
*
- *
+ *
* Stack: ..., arrayref, index -> ..., value
- *
+ *
*/
public class FALOAD extends ArrayInstruction implements StackProducer {
diff --git a/src/main/java/org/apache/bcel/generic/FASTORE.java b/src/main/java/org/apache/bcel/generic/FASTORE.java
index 06d62a069b..00c6825c53 100644
--- a/src/main/java/org/apache/bcel/generic/FASTORE.java
+++ b/src/main/java/org/apache/bcel/generic/FASTORE.java
@@ -21,9 +21,9 @@
/**
* FASTORE - Store into float array
*
- *
+ *
* Stack: ..., arrayref, index, value -> ...
- *
+ *
*/
public class FASTORE extends ArrayInstruction implements StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/FCMPG.java b/src/main/java/org/apache/bcel/generic/FCMPG.java
index 6aff01245d..4de55f2b81 100644
--- a/src/main/java/org/apache/bcel/generic/FCMPG.java
+++ b/src/main/java/org/apache/bcel/generic/FCMPG.java
@@ -21,9 +21,9 @@
/**
* FCMPG - Compare floats: value1 > value2
*
- *
+ *
* Stack: ..., value1, value2 -> ..., result
- *
+ *
*/
public class FCMPG extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/FCMPL.java b/src/main/java/org/apache/bcel/generic/FCMPL.java
index 0a5bfefeae..e2679ac062 100644
--- a/src/main/java/org/apache/bcel/generic/FCMPL.java
+++ b/src/main/java/org/apache/bcel/generic/FCMPL.java
@@ -21,9 +21,9 @@
/**
* FCMPL - Compare floats: value1 < value2
*
- *
+ *
* Stack: ..., value1, value2 -> ..., result
- *
+ *
*/
public class FCMPL extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/FCONST.java b/src/main/java/org/apache/bcel/generic/FCONST.java
index 0ba2a4f773..9dd5aa43be 100644
--- a/src/main/java/org/apache/bcel/generic/FCONST.java
+++ b/src/main/java/org/apache/bcel/generic/FCONST.java
@@ -21,9 +21,9 @@
/**
* FCONST - Push 0.0, 1.0 or 2.0, other values cause an exception
*
- *
+ *
* Stack: ... -> ...,
- *
+ *
*/
public class FCONST extends Instruction implements ConstantPushInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/FDIV.java b/src/main/java/org/apache/bcel/generic/FDIV.java
index 5c76b5233e..3e3010b126 100644
--- a/src/main/java/org/apache/bcel/generic/FDIV.java
+++ b/src/main/java/org/apache/bcel/generic/FDIV.java
@@ -21,9 +21,9 @@
/**
* FDIV - Divide floats
*
- *
+ *
* Stack: ..., value1, value2 -> result
- *
+ *
*/
public class FDIV extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/FLOAD.java b/src/main/java/org/apache/bcel/generic/FLOAD.java
index c45b5930dd..6efe6d6990 100644
--- a/src/main/java/org/apache/bcel/generic/FLOAD.java
+++ b/src/main/java/org/apache/bcel/generic/FLOAD.java
@@ -21,9 +21,9 @@
/**
* FLOAD - Load float from local variable
*
- *
+ *
* Stack ... -> ..., result
- *
+ *
*/
public class FLOAD extends LoadInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/FMUL.java b/src/main/java/org/apache/bcel/generic/FMUL.java
index fd2a1eb86a..0c1d1451d6 100644
--- a/src/main/java/org/apache/bcel/generic/FMUL.java
+++ b/src/main/java/org/apache/bcel/generic/FMUL.java
@@ -21,9 +21,9 @@
/**
* FMUL - Multiply floats
*
- *
+ *
* Stack: ..., value1, value2 -> result
- *
+ *
*/
public class FMUL extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/FNEG.java b/src/main/java/org/apache/bcel/generic/FNEG.java
index 04c1dfb4b9..630408e698 100644
--- a/src/main/java/org/apache/bcel/generic/FNEG.java
+++ b/src/main/java/org/apache/bcel/generic/FNEG.java
@@ -21,9 +21,9 @@
/**
* FNEG - Negate float
*
- *
+ *
* Stack: ..., value -> ..., result
- *
+ *
*/
public class FNEG extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/FREM.java b/src/main/java/org/apache/bcel/generic/FREM.java
index 01e2049f38..44464ea31b 100644
--- a/src/main/java/org/apache/bcel/generic/FREM.java
+++ b/src/main/java/org/apache/bcel/generic/FREM.java
@@ -21,9 +21,9 @@
/**
* FREM - Remainder of floats
*
- *
+ *
* Stack: ..., value1, value2 -> result
- *
+ *
*/
public class FREM extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/FRETURN.java b/src/main/java/org/apache/bcel/generic/FRETURN.java
index a9a6a2eb89..9b87b71702 100644
--- a/src/main/java/org/apache/bcel/generic/FRETURN.java
+++ b/src/main/java/org/apache/bcel/generic/FRETURN.java
@@ -21,9 +21,9 @@
/**
* FRETURN - Return float from method
*
- *
+ *
* Stack: ..., value -> <empty>
- *
+ *
*/
public class FRETURN extends ReturnInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/FSTORE.java b/src/main/java/org/apache/bcel/generic/FSTORE.java
index ed394743bf..9bb06003d7 100644
--- a/src/main/java/org/apache/bcel/generic/FSTORE.java
+++ b/src/main/java/org/apache/bcel/generic/FSTORE.java
@@ -21,9 +21,9 @@
/**
* FSTORE - Store float into local variable
*
- *
+ *
* Stack: ..., value -> ...
- *
+ *
*/
public class FSTORE extends StoreInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/FSUB.java b/src/main/java/org/apache/bcel/generic/FSUB.java
index 987a5b3701..aec5385870 100644
--- a/src/main/java/org/apache/bcel/generic/FSUB.java
+++ b/src/main/java/org/apache/bcel/generic/FSUB.java
@@ -21,9 +21,9 @@
/**
* FSUB - Substract floats
*
- *
+ *
* Stack: ..., value1, value2 -> result
- *
+ *
*/
public class FSUB extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/GETFIELD.java b/src/main/java/org/apache/bcel/generic/GETFIELD.java
index 5fd8da60f1..6737357e08 100644
--- a/src/main/java/org/apache/bcel/generic/GETFIELD.java
+++ b/src/main/java/org/apache/bcel/generic/GETFIELD.java
@@ -24,15 +24,15 @@
/**
* GETFIELD - Fetch field from object
*
- *
+ *
* Stack: ..., objectref -> ..., value
- *
+ *
*
* OR
*
- *
+ *
* Stack: ..., objectref -> ..., value.word1, value.word2
- *
+ *
*/
public class GETFIELD extends FieldInstruction implements ExceptionThrower, StackConsumer, StackProducer {
diff --git a/src/main/java/org/apache/bcel/generic/GETSTATIC.java b/src/main/java/org/apache/bcel/generic/GETSTATIC.java
index 0ff6ffeedf..5efe328ea4 100644
--- a/src/main/java/org/apache/bcel/generic/GETSTATIC.java
+++ b/src/main/java/org/apache/bcel/generic/GETSTATIC.java
@@ -24,15 +24,15 @@
/**
* GETSTATIC - Fetch static field from class
*
- *
+ *
* Stack: ..., -> ..., value
- *
+ *
*
* OR
*
- *
+ *
* Stack: ..., -> ..., value.word1, value.word2
- *
+ *
*/
public class GETSTATIC extends FieldInstruction implements PushInstruction, ExceptionThrower {
diff --git a/src/main/java/org/apache/bcel/generic/I2B.java b/src/main/java/org/apache/bcel/generic/I2B.java
index aa7678d5eb..972abe8ba9 100644
--- a/src/main/java/org/apache/bcel/generic/I2B.java
+++ b/src/main/java/org/apache/bcel/generic/I2B.java
@@ -21,9 +21,9 @@
/**
* I2B - Convert int to byte
*
- *
+ *
* Stack: ..., value -> ..., result
- *
+ *
*/
public class I2B extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/I2C.java b/src/main/java/org/apache/bcel/generic/I2C.java
index 428059bb9c..867a96f699 100644
--- a/src/main/java/org/apache/bcel/generic/I2C.java
+++ b/src/main/java/org/apache/bcel/generic/I2C.java
@@ -21,9 +21,9 @@
/**
* I2C - Convert int to char
*
- *
+ *
* Stack: ..., value -> ..., result
- *
+ *
*/
public class I2C extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/I2D.java b/src/main/java/org/apache/bcel/generic/I2D.java
index 6dc4ad4f26..595943afdd 100644
--- a/src/main/java/org/apache/bcel/generic/I2D.java
+++ b/src/main/java/org/apache/bcel/generic/I2D.java
@@ -21,9 +21,9 @@
/**
* I2D - Convert int to double
*
- *
+ *
* Stack: ..., value -> ..., result.word1, result.word2
- *
+ *
*/
public class I2D extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/I2F.java b/src/main/java/org/apache/bcel/generic/I2F.java
index 2fa4b92bff..a963597e7f 100644
--- a/src/main/java/org/apache/bcel/generic/I2F.java
+++ b/src/main/java/org/apache/bcel/generic/I2F.java
@@ -21,9 +21,9 @@
/**
* I2F - Convert int to float
*
- *
+ *
* Stack: ..., value -> ..., result
- *
+ *
*/
public class I2F extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/I2L.java b/src/main/java/org/apache/bcel/generic/I2L.java
index 2d9888e82f..e1ec0bc074 100644
--- a/src/main/java/org/apache/bcel/generic/I2L.java
+++ b/src/main/java/org/apache/bcel/generic/I2L.java
@@ -21,9 +21,9 @@
/**
* I2L - Convert int to long
*
- *
+ *
* Stack: ..., value -> ..., result.word1, result.word2
- *
+ *
*/
public class I2L extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/I2S.java b/src/main/java/org/apache/bcel/generic/I2S.java
index 66ce5950b7..cdd37cac60 100644
--- a/src/main/java/org/apache/bcel/generic/I2S.java
+++ b/src/main/java/org/apache/bcel/generic/I2S.java
@@ -21,9 +21,9 @@
/**
* I2S - Convert int to short
*
- *
+ *
* Stack: ..., value -> ..., result
- *
+ *
*/
public class I2S extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IADD.java b/src/main/java/org/apache/bcel/generic/IADD.java
index ed889d431b..53d8aaa906 100644
--- a/src/main/java/org/apache/bcel/generic/IADD.java
+++ b/src/main/java/org/apache/bcel/generic/IADD.java
@@ -21,9 +21,9 @@
/**
* IADD - Add ints
*
- *
+ *
* Stack: ..., value1, value2 -> result
- *
+ *
*/
public class IADD extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IALOAD.java b/src/main/java/org/apache/bcel/generic/IALOAD.java
index 63fb5222f3..10748f0eb9 100644
--- a/src/main/java/org/apache/bcel/generic/IALOAD.java
+++ b/src/main/java/org/apache/bcel/generic/IALOAD.java
@@ -21,9 +21,9 @@
/**
* IALOAD - Load int from array
*
- *
+ *
* Stack: ..., arrayref, index -> ..., value
- *
+ *
*/
public class IALOAD extends ArrayInstruction implements StackProducer {
diff --git a/src/main/java/org/apache/bcel/generic/IAND.java b/src/main/java/org/apache/bcel/generic/IAND.java
index 81e987c2dd..97aecf8d9b 100644
--- a/src/main/java/org/apache/bcel/generic/IAND.java
+++ b/src/main/java/org/apache/bcel/generic/IAND.java
@@ -21,9 +21,9 @@
/**
* IAND - Bitwise AND int
*
- *
+ *
* Stack: ..., value1, value2 -> ..., result
- *
+ *
*/
public class IAND extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IASTORE.java b/src/main/java/org/apache/bcel/generic/IASTORE.java
index 398dfb413c..c33fb75307 100644
--- a/src/main/java/org/apache/bcel/generic/IASTORE.java
+++ b/src/main/java/org/apache/bcel/generic/IASTORE.java
@@ -21,9 +21,9 @@
/**
* IASTORE - Store into int array
*
- *
+ *
* Stack: ..., arrayref, index, value -> ...
- *
+ *
*/
public class IASTORE extends ArrayInstruction implements StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/ICONST.java b/src/main/java/org/apache/bcel/generic/ICONST.java
index 2b3f0a567d..24628783f5 100644
--- a/src/main/java/org/apache/bcel/generic/ICONST.java
+++ b/src/main/java/org/apache/bcel/generic/ICONST.java
@@ -21,9 +21,9 @@
/**
* ICONST - Push value between -1, ..., 5, other values cause an exception
*
- *
+ *
* Stack: ... -> ...,
- *
+ *
*/
public class ICONST extends Instruction implements ConstantPushInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IDIV.java b/src/main/java/org/apache/bcel/generic/IDIV.java
index d71bd7c8a2..42de5bb8a5 100644
--- a/src/main/java/org/apache/bcel/generic/IDIV.java
+++ b/src/main/java/org/apache/bcel/generic/IDIV.java
@@ -23,9 +23,9 @@
/**
* IDIV - Divide ints
*
- *
+ *
* Stack: ..., value1, value2 -> result
- *
+ *
*/
public class IDIV extends ArithmeticInstruction implements ExceptionThrower {
diff --git a/src/main/java/org/apache/bcel/generic/IFEQ.java b/src/main/java/org/apache/bcel/generic/IFEQ.java
index a8df648630..e80e5a9d3a 100644
--- a/src/main/java/org/apache/bcel/generic/IFEQ.java
+++ b/src/main/java/org/apache/bcel/generic/IFEQ.java
@@ -21,9 +21,9 @@
/**
* IFEQ - Branch if int comparison with zero succeeds
*
- *
+ *
* Stack: ..., value -> ...
- *
+ *
*/
public class IFEQ extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IFGE.java b/src/main/java/org/apache/bcel/generic/IFGE.java
index b0d9763275..b3ec9a2fb1 100644
--- a/src/main/java/org/apache/bcel/generic/IFGE.java
+++ b/src/main/java/org/apache/bcel/generic/IFGE.java
@@ -21,9 +21,9 @@
/**
* IFGE - Branch if int comparison with zero succeeds
*
- *
+ *
* Stack: ..., value -> ...
- *
+ *
*/
public class IFGE extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IFGT.java b/src/main/java/org/apache/bcel/generic/IFGT.java
index 735527e516..dc7a5a3c49 100644
--- a/src/main/java/org/apache/bcel/generic/IFGT.java
+++ b/src/main/java/org/apache/bcel/generic/IFGT.java
@@ -21,9 +21,9 @@
/**
* IFGT - Branch if int comparison with zero succeeds
*
- *
+ *
* Stack: ..., value -> ...
- *
+ *
*/
public class IFGT extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IFLE.java b/src/main/java/org/apache/bcel/generic/IFLE.java
index a678ddf113..9ea00b50ac 100644
--- a/src/main/java/org/apache/bcel/generic/IFLE.java
+++ b/src/main/java/org/apache/bcel/generic/IFLE.java
@@ -21,9 +21,9 @@
/**
* IFLE - Branch if int comparison with zero succeeds
*
- *
+ *
* Stack: ..., value -> ...
- *
+ *
*/
public class IFLE extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IFLT.java b/src/main/java/org/apache/bcel/generic/IFLT.java
index 84b5b9fdb1..1eb15bef5f 100644
--- a/src/main/java/org/apache/bcel/generic/IFLT.java
+++ b/src/main/java/org/apache/bcel/generic/IFLT.java
@@ -21,9 +21,9 @@
/**
* IFLT - Branch if int comparison with zero succeeds
*
- *
+ *
* Stack: ..., value -> ...
- *
+ *
*/
public class IFLT extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IFNE.java b/src/main/java/org/apache/bcel/generic/IFNE.java
index 9498e29f18..d7b64c2198 100644
--- a/src/main/java/org/apache/bcel/generic/IFNE.java
+++ b/src/main/java/org/apache/bcel/generic/IFNE.java
@@ -21,9 +21,9 @@
/**
* IFNE - Branch if int comparison with zero succeeds
*
- *
+ *
* Stack: ..., value -> ...
- *
+ *
*/
public class IFNE extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IFNONNULL.java b/src/main/java/org/apache/bcel/generic/IFNONNULL.java
index 4b8a7c5d92..0809796778 100644
--- a/src/main/java/org/apache/bcel/generic/IFNONNULL.java
+++ b/src/main/java/org/apache/bcel/generic/IFNONNULL.java
@@ -21,9 +21,9 @@
/**
* IFNONNULL - Branch if reference is not null
*
- *
+ *
* Stack: ..., reference -> ...
- *
+ *
*/
public class IFNONNULL extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IFNULL.java b/src/main/java/org/apache/bcel/generic/IFNULL.java
index 6f29e804ff..4d9d772fe1 100644
--- a/src/main/java/org/apache/bcel/generic/IFNULL.java
+++ b/src/main/java/org/apache/bcel/generic/IFNULL.java
@@ -21,9 +21,9 @@
/**
* IFNULL - Branch if reference is not null
*
- *
+ *
* Stack: ..., reference -> ...
- *
+ *
*/
public class IFNULL extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IF_ACMPEQ.java b/src/main/java/org/apache/bcel/generic/IF_ACMPEQ.java
index 42e2a24ae0..41e952b578 100644
--- a/src/main/java/org/apache/bcel/generic/IF_ACMPEQ.java
+++ b/src/main/java/org/apache/bcel/generic/IF_ACMPEQ.java
@@ -21,9 +21,9 @@
/**
* IF_ACMPEQ - Branch if reference comparison succeeds
*
- *
+ *
* Stack: ..., value1, value2 -> ...
- *
+ *
*/
public class IF_ACMPEQ extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IF_ACMPNE.java b/src/main/java/org/apache/bcel/generic/IF_ACMPNE.java
index 0fb45b7f35..8bad434166 100644
--- a/src/main/java/org/apache/bcel/generic/IF_ACMPNE.java
+++ b/src/main/java/org/apache/bcel/generic/IF_ACMPNE.java
@@ -21,9 +21,9 @@
/**
* IF_ACMPNE - Branch if reference comparison doesn't succeed
*
- *
+ *
* Stack: ..., value1, value2 -> ...
- *
+ *
*/
public class IF_ACMPNE extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IF_ICMPEQ.java b/src/main/java/org/apache/bcel/generic/IF_ICMPEQ.java
index 033fb5f562..22eea2f092 100644
--- a/src/main/java/org/apache/bcel/generic/IF_ICMPEQ.java
+++ b/src/main/java/org/apache/bcel/generic/IF_ICMPEQ.java
@@ -21,9 +21,9 @@
/**
* IF_ICMPEQ - Branch if int comparison succeeds
*
- *
+ *
* Stack: ..., value1, value2 -> ...
- *
+ *
*/
public class IF_ICMPEQ extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IF_ICMPGE.java b/src/main/java/org/apache/bcel/generic/IF_ICMPGE.java
index 16d247b8d1..a13212a84b 100644
--- a/src/main/java/org/apache/bcel/generic/IF_ICMPGE.java
+++ b/src/main/java/org/apache/bcel/generic/IF_ICMPGE.java
@@ -21,9 +21,9 @@
/**
* IF_ICMPGE - Branch if int comparison succeeds
*
- *
+ *
* Stack: ..., value1, value2 -> ...
- *
+ *
*/
public class IF_ICMPGE extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IF_ICMPGT.java b/src/main/java/org/apache/bcel/generic/IF_ICMPGT.java
index 3c45f844bc..a5cd42980f 100644
--- a/src/main/java/org/apache/bcel/generic/IF_ICMPGT.java
+++ b/src/main/java/org/apache/bcel/generic/IF_ICMPGT.java
@@ -21,9 +21,9 @@
/**
* IF_ICMPGT - Branch if int comparison succeeds
*
- *
+ *
* Stack: ..., value1, value2 -> ...
- *
+ *
*/
public class IF_ICMPGT extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IF_ICMPLE.java b/src/main/java/org/apache/bcel/generic/IF_ICMPLE.java
index c79fb98fb0..18a1ff352d 100644
--- a/src/main/java/org/apache/bcel/generic/IF_ICMPLE.java
+++ b/src/main/java/org/apache/bcel/generic/IF_ICMPLE.java
@@ -21,9 +21,9 @@
/**
* IF_ICMPLE - Branch if int comparison succeeds
*
- *
+ *
* Stack: ..., value1, value2 -> ...
- *
+ *
*/
public class IF_ICMPLE extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IF_ICMPLT.java b/src/main/java/org/apache/bcel/generic/IF_ICMPLT.java
index ce433d06ed..b5df339ea5 100644
--- a/src/main/java/org/apache/bcel/generic/IF_ICMPLT.java
+++ b/src/main/java/org/apache/bcel/generic/IF_ICMPLT.java
@@ -21,9 +21,9 @@
/**
* IF_ICMPLT - Branch if int comparison succeeds
*
- *
+ *
* Stack: ..., value1, value2 -> ...
- *
+ *
*/
public class IF_ICMPLT extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IF_ICMPNE.java b/src/main/java/org/apache/bcel/generic/IF_ICMPNE.java
index 73577e4209..2be5ef591b 100644
--- a/src/main/java/org/apache/bcel/generic/IF_ICMPNE.java
+++ b/src/main/java/org/apache/bcel/generic/IF_ICMPNE.java
@@ -21,9 +21,9 @@
/**
* IF_ICMPNE - Branch if int comparison doesn't succeed
*
- *
+ *
* Stack: ..., value1, value2 -> ...
- *
+ *
*/
public class IF_ICMPNE extends IfInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/ILOAD.java b/src/main/java/org/apache/bcel/generic/ILOAD.java
index 8d31df386b..911f380a71 100644
--- a/src/main/java/org/apache/bcel/generic/ILOAD.java
+++ b/src/main/java/org/apache/bcel/generic/ILOAD.java
@@ -21,9 +21,9 @@
/**
* ILOAD - Load int from local variable onto stack
*
- *
+ *
* Stack: ... -> ..., result
- *
+ *
*/
public class ILOAD extends LoadInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IMUL.java b/src/main/java/org/apache/bcel/generic/IMUL.java
index 30a5b46e96..3aacf5c749 100644
--- a/src/main/java/org/apache/bcel/generic/IMUL.java
+++ b/src/main/java/org/apache/bcel/generic/IMUL.java
@@ -21,9 +21,9 @@
/**
* IMUL - Multiply ints
*
- *
+ *
* Stack: ..., value1, value2 -> result
- *
+ *
*/
public class IMUL extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/INEG.java b/src/main/java/org/apache/bcel/generic/INEG.java
index ceb5f389f5..216acab686 100644
--- a/src/main/java/org/apache/bcel/generic/INEG.java
+++ b/src/main/java/org/apache/bcel/generic/INEG.java
@@ -21,9 +21,9 @@
/**
* INEG - Negate int
*
- *
+ *
* Stack: ..., value -> ..., result
- *
+ *
*/
public class INEG extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/INSTANCEOF.java b/src/main/java/org/apache/bcel/generic/INSTANCEOF.java
index ce2f865c96..3e14a4f7d9 100644
--- a/src/main/java/org/apache/bcel/generic/INSTANCEOF.java
+++ b/src/main/java/org/apache/bcel/generic/INSTANCEOF.java
@@ -23,9 +23,9 @@
/**
* INSTANCEOF - Determine if object is of given type
*
- *
+ *
* Stack: ..., objectref -> ..., result
- *
+ *
*/
public class INSTANCEOF extends CPInstruction implements LoadClass, ExceptionThrower, StackProducer, StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/INVOKEINTERFACE.java b/src/main/java/org/apache/bcel/generic/INVOKEINTERFACE.java
index 650af62796..d8798cdc65 100644
--- a/src/main/java/org/apache/bcel/generic/INVOKEINTERFACE.java
+++ b/src/main/java/org/apache/bcel/generic/INVOKEINTERFACE.java
@@ -29,9 +29,9 @@
/**
* INVOKEINTERFACE - Invoke interface method
*
- *
+ *
* Stack: ..., objectref, [arg1, [arg2 ...]] -> ...
- *
+ *
*
* @see The
* invokeinterface instruction in The Java Virtual Machine Specification
diff --git a/src/main/java/org/apache/bcel/generic/INVOKESPECIAL.java b/src/main/java/org/apache/bcel/generic/INVOKESPECIAL.java
index d1b5e91959..f78691c2be 100644
--- a/src/main/java/org/apache/bcel/generic/INVOKESPECIAL.java
+++ b/src/main/java/org/apache/bcel/generic/INVOKESPECIAL.java
@@ -28,9 +28,9 @@
* INVOKESPECIAL - Invoke instance method; special handling for superclass, private and instance initialization method
* invocations
*
- *
+ *
* Stack: ..., objectref, [arg1, [arg2 ...]] -> ...
- *
+ *
*
* @see The
* invokespecial instruction in The Java Virtual Machine Specification
diff --git a/src/main/java/org/apache/bcel/generic/INVOKESTATIC.java b/src/main/java/org/apache/bcel/generic/INVOKESTATIC.java
index 11522741ec..6ed183a192 100644
--- a/src/main/java/org/apache/bcel/generic/INVOKESTATIC.java
+++ b/src/main/java/org/apache/bcel/generic/INVOKESTATIC.java
@@ -27,9 +27,9 @@
/**
* INVOKESTATIC - Invoke a class (static) method
*
- *
+ *
* Stack: ..., [arg1, [arg2 ...]] -> ...
- *
+ *
*
* @see The invokestatic
* instruction in The Java Virtual Machine Specification
diff --git a/src/main/java/org/apache/bcel/generic/INVOKEVIRTUAL.java b/src/main/java/org/apache/bcel/generic/INVOKEVIRTUAL.java
index 95e23aadd5..d4dd6831d9 100644
--- a/src/main/java/org/apache/bcel/generic/INVOKEVIRTUAL.java
+++ b/src/main/java/org/apache/bcel/generic/INVOKEVIRTUAL.java
@@ -27,9 +27,9 @@
/**
* INVOKEVIRTUAL - Invoke instance method; dispatch based on class
*
- *
+ *
* Stack: ..., objectref, [arg1, [arg2 ...]] -> ...
- *
+ *
*
* @see The
* invokevirtual instruction in The Java Virtual Machine Specification
diff --git a/src/main/java/org/apache/bcel/generic/IOR.java b/src/main/java/org/apache/bcel/generic/IOR.java
index f9897b9a94..4bd613bcf5 100644
--- a/src/main/java/org/apache/bcel/generic/IOR.java
+++ b/src/main/java/org/apache/bcel/generic/IOR.java
@@ -21,9 +21,9 @@
/**
* IOR - Bitwise OR int
*
- *
+ *
* Stack: ..., value1, value2 -> ..., result
- *
+ *
*/
public class IOR extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IREM.java b/src/main/java/org/apache/bcel/generic/IREM.java
index 20c2a01749..7451116399 100644
--- a/src/main/java/org/apache/bcel/generic/IREM.java
+++ b/src/main/java/org/apache/bcel/generic/IREM.java
@@ -23,9 +23,9 @@
/**
* IREM - Remainder of int
*
- *
+ *
* Stack: ..., value1, value2 -> result
- *
+ *
*/
public class IREM extends ArithmeticInstruction implements ExceptionThrower {
diff --git a/src/main/java/org/apache/bcel/generic/IRETURN.java b/src/main/java/org/apache/bcel/generic/IRETURN.java
index 65ab4ca2b7..76b6354cd5 100644
--- a/src/main/java/org/apache/bcel/generic/IRETURN.java
+++ b/src/main/java/org/apache/bcel/generic/IRETURN.java
@@ -21,9 +21,9 @@
/**
* IRETURN - Return int from method
*
- *
+ *
* Stack: ..., value -> <empty>
- *
+ *
*/
public class IRETURN extends ReturnInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/ISHL.java b/src/main/java/org/apache/bcel/generic/ISHL.java
index b051b7e2a7..9e32aeda6f 100644
--- a/src/main/java/org/apache/bcel/generic/ISHL.java
+++ b/src/main/java/org/apache/bcel/generic/ISHL.java
@@ -21,9 +21,9 @@
/**
* ISHL - Arithmetic shift left int
*
- *
+ *
* Stack: ..., value1, value2 -> ..., result
- *
+ *
*/
public class ISHL extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/ISHR.java b/src/main/java/org/apache/bcel/generic/ISHR.java
index 102448a16c..8025356974 100644
--- a/src/main/java/org/apache/bcel/generic/ISHR.java
+++ b/src/main/java/org/apache/bcel/generic/ISHR.java
@@ -21,9 +21,9 @@
/**
* ISHR - Arithmetic shift right int
*
- *
+ *
* Stack: ..., value1, value2 -> ..., result
- *
+ *
*/
public class ISHR extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/ISTORE.java b/src/main/java/org/apache/bcel/generic/ISTORE.java
index b0c9a9b082..b054338dff 100644
--- a/src/main/java/org/apache/bcel/generic/ISTORE.java
+++ b/src/main/java/org/apache/bcel/generic/ISTORE.java
@@ -21,9 +21,9 @@
/**
* ISTORE - Store int from stack into local variable
*
- *
+ *
* Stack: ..., value -> ...
- *
+ *
*/
public class ISTORE extends StoreInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/ISUB.java b/src/main/java/org/apache/bcel/generic/ISUB.java
index 9f346062d3..b79a7b6e92 100644
--- a/src/main/java/org/apache/bcel/generic/ISUB.java
+++ b/src/main/java/org/apache/bcel/generic/ISUB.java
@@ -21,9 +21,9 @@
/**
* ISUB - Substract ints
*
- *
+ *
* Stack: ..., value1, value2 -> result
- *
+ *
*/
public class ISUB extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IUSHR.java b/src/main/java/org/apache/bcel/generic/IUSHR.java
index 04ab9528b5..5435780127 100644
--- a/src/main/java/org/apache/bcel/generic/IUSHR.java
+++ b/src/main/java/org/apache/bcel/generic/IUSHR.java
@@ -21,9 +21,9 @@
/**
* IUSHR - Logical shift right int
*
- *
+ *
* Stack: ..., value1, value2 -> ..., result
- *
+ *
*/
public class IUSHR extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/IXOR.java b/src/main/java/org/apache/bcel/generic/IXOR.java
index 0b64b22652..d1dd387d1a 100644
--- a/src/main/java/org/apache/bcel/generic/IXOR.java
+++ b/src/main/java/org/apache/bcel/generic/IXOR.java
@@ -21,9 +21,9 @@
/**
* IXOR - Bitwise XOR int
*
- *
+ *
* Stack: ..., value1, value2 -> ..., result
- *
+ *
*/
public class IXOR extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/L2D.java b/src/main/java/org/apache/bcel/generic/L2D.java
index 0a8ba3f8f6..0e29e374fe 100644
--- a/src/main/java/org/apache/bcel/generic/L2D.java
+++ b/src/main/java/org/apache/bcel/generic/L2D.java
@@ -21,9 +21,9 @@
/**
* L2D - Convert long to double
*
- *
+ *
* Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
- *
+ *
*/
public class L2D extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/L2F.java b/src/main/java/org/apache/bcel/generic/L2F.java
index 7608d3d1e7..67384614fe 100644
--- a/src/main/java/org/apache/bcel/generic/L2F.java
+++ b/src/main/java/org/apache/bcel/generic/L2F.java
@@ -21,9 +21,9 @@
/**
* L2F - Convert long to float
*
- *
+ *
* Stack: ..., value.word1, value.word2 -> ..., result
- *
+ *
*/
public class L2F extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/L2I.java b/src/main/java/org/apache/bcel/generic/L2I.java
index 95fcc88241..122be8411f 100644
--- a/src/main/java/org/apache/bcel/generic/L2I.java
+++ b/src/main/java/org/apache/bcel/generic/L2I.java
@@ -21,9 +21,9 @@
/**
* L2I - Convert long to int
*
- *
+ *
* Stack: ..., value.word1, value.word2 -> ..., result
- *
+ *
*/
public class L2I extends ConversionInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/LADD.java b/src/main/java/org/apache/bcel/generic/LADD.java
index 3d0c6b8c5a..3182d9b2e6 100644
--- a/src/main/java/org/apache/bcel/generic/LADD.java
+++ b/src/main/java/org/apache/bcel/generic/LADD.java
@@ -21,9 +21,9 @@
/**
* LADD - Add longs
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- *
+ *
*
* ..., result.word1, result.word2
*/
diff --git a/src/main/java/org/apache/bcel/generic/LALOAD.java b/src/main/java/org/apache/bcel/generic/LALOAD.java
index 1c1db65aee..c9d034e0bd 100644
--- a/src/main/java/org/apache/bcel/generic/LALOAD.java
+++ b/src/main/java/org/apache/bcel/generic/LALOAD.java
@@ -21,9 +21,9 @@
/**
* LALOAD - Load long from array
*
- *
+ *
* Stack: ..., arrayref, index -> ..., value1, value2
- *
+ *
*/
public class LALOAD extends ArrayInstruction implements StackProducer {
diff --git a/src/main/java/org/apache/bcel/generic/LAND.java b/src/main/java/org/apache/bcel/generic/LAND.java
index 375e6bcb4f..0593c97a64 100644
--- a/src/main/java/org/apache/bcel/generic/LAND.java
+++ b/src/main/java/org/apache/bcel/generic/LAND.java
@@ -21,9 +21,9 @@
/**
* LAND - Bitwise AND longs
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- *
+ *
*
* ..., result.word1, result.word2
*/
diff --git a/src/main/java/org/apache/bcel/generic/LASTORE.java b/src/main/java/org/apache/bcel/generic/LASTORE.java
index 1e0e8ed5ca..76badf8330 100644
--- a/src/main/java/org/apache/bcel/generic/LASTORE.java
+++ b/src/main/java/org/apache/bcel/generic/LASTORE.java
@@ -21,9 +21,9 @@
/**
* LASTORE - Store into long array
*
- *
+ *
* Stack: ..., arrayref, index, value.word1, value.word2 -> ...
- *
+ *
*/
public class LASTORE extends ArrayInstruction implements StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/LCMP.java b/src/main/java/org/apache/bcel/generic/LCMP.java
index 1768d2ae40..d12bed349e 100644
--- a/src/main/java/org/apache/bcel/generic/LCMP.java
+++ b/src/main/java/org/apache/bcel/generic/LCMP.java
@@ -21,9 +21,9 @@
/**
* LCMP - Compare longs:
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 -> ..., result <= -1, 0, 1>
- *
+ *
*/
public class LCMP extends Instruction implements TypedInstruction, StackProducer, StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/LCONST.java b/src/main/java/org/apache/bcel/generic/LCONST.java
index 875379038e..57380288cd 100644
--- a/src/main/java/org/apache/bcel/generic/LCONST.java
+++ b/src/main/java/org/apache/bcel/generic/LCONST.java
@@ -21,9 +21,9 @@
/**
* LCONST - Push 0 or 1, other values cause an exception
*
- *
+ *
* Stack: ... -> ...,
- *
+ *
*/
public class LCONST extends Instruction implements ConstantPushInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/LDC.java b/src/main/java/org/apache/bcel/generic/LDC.java
index d84b480870..2d916b5017 100644
--- a/src/main/java/org/apache/bcel/generic/LDC.java
+++ b/src/main/java/org/apache/bcel/generic/LDC.java
@@ -27,9 +27,9 @@
/**
* LDC - Push item from constant pool.
*
- *
+ *
* Stack: ... -> ..., item
- *
+ *
*/
public class LDC extends CPInstruction implements PushInstruction, ExceptionThrower {
diff --git a/src/main/java/org/apache/bcel/generic/LDC2_W.java b/src/main/java/org/apache/bcel/generic/LDC2_W.java
index ec7193d938..3075abc7f2 100644
--- a/src/main/java/org/apache/bcel/generic/LDC2_W.java
+++ b/src/main/java/org/apache/bcel/generic/LDC2_W.java
@@ -21,9 +21,9 @@
/**
* LDC2_W - Push long or double from constant pool
*
- *
+ *
* Stack: ... -> ..., item.word1, item.word2
- *
+ *
*/
public class LDC2_W extends CPInstruction implements PushInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/LDC_W.java b/src/main/java/org/apache/bcel/generic/LDC_W.java
index 52600ae79f..00eae30943 100644
--- a/src/main/java/org/apache/bcel/generic/LDC_W.java
+++ b/src/main/java/org/apache/bcel/generic/LDC_W.java
@@ -25,9 +25,9 @@
/**
* LDC_W - Push item from constant pool (wide index)
*
- *
+ *
* Stack: ... -> ..., item.word1, item.word2
- *
+ *
*/
public class LDC_W extends LDC {
diff --git a/src/main/java/org/apache/bcel/generic/LDIV.java b/src/main/java/org/apache/bcel/generic/LDIV.java
index 0f2653877e..3143d74883 100644
--- a/src/main/java/org/apache/bcel/generic/LDIV.java
+++ b/src/main/java/org/apache/bcel/generic/LDIV.java
@@ -23,9 +23,9 @@
/**
* LDIV - Divide longs
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- *
+ *
*
* ..., result.word1, result.word2
*/
diff --git a/src/main/java/org/apache/bcel/generic/LLOAD.java b/src/main/java/org/apache/bcel/generic/LLOAD.java
index 7ca761b546..418b16db79 100644
--- a/src/main/java/org/apache/bcel/generic/LLOAD.java
+++ b/src/main/java/org/apache/bcel/generic/LLOAD.java
@@ -21,9 +21,9 @@
/**
* LLOAD - Load long from local variable
*
- *
+ *
* Stack ... -> ..., result.word1, result.word2
- *
+ *
*/
public class LLOAD extends LoadInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/LMUL.java b/src/main/java/org/apache/bcel/generic/LMUL.java
index d2245144a5..47be2cde4e 100644
--- a/src/main/java/org/apache/bcel/generic/LMUL.java
+++ b/src/main/java/org/apache/bcel/generic/LMUL.java
@@ -21,9 +21,9 @@
/**
* LMUL - Multiply longs
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- *
+ *
*
* ..., result.word1, result.word2
*/
diff --git a/src/main/java/org/apache/bcel/generic/LNEG.java b/src/main/java/org/apache/bcel/generic/LNEG.java
index 5db072d9fe..e055686553 100644
--- a/src/main/java/org/apache/bcel/generic/LNEG.java
+++ b/src/main/java/org/apache/bcel/generic/LNEG.java
@@ -21,9 +21,9 @@
/**
* LNEG - Negate long
*
- *
+ *
* Stack: ..., value.word1, value.word2 -> ..., result.word1, result.word2
- *
+ *
*/
public class LNEG extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/LOR.java b/src/main/java/org/apache/bcel/generic/LOR.java
index a8cdfedde0..dd2b835476 100644
--- a/src/main/java/org/apache/bcel/generic/LOR.java
+++ b/src/main/java/org/apache/bcel/generic/LOR.java
@@ -21,9 +21,9 @@
/**
* LOR - Bitwise OR long
*
- *
+ *
* Stack: ..., value1, value2 -> ..., result
- *
+ *
*/
public class LOR extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/LREM.java b/src/main/java/org/apache/bcel/generic/LREM.java
index 5ae87dcdff..d9aad9e231 100644
--- a/src/main/java/org/apache/bcel/generic/LREM.java
+++ b/src/main/java/org/apache/bcel/generic/LREM.java
@@ -23,9 +23,9 @@
/**
* LREM - Remainder of long
*
- *
+ *
* Stack: ..., value1, value2 -> result
- *
+ *
*/
public class LREM extends ArithmeticInstruction implements ExceptionThrower {
diff --git a/src/main/java/org/apache/bcel/generic/LRETURN.java b/src/main/java/org/apache/bcel/generic/LRETURN.java
index 9a447e9f83..78aa1e8c06 100644
--- a/src/main/java/org/apache/bcel/generic/LRETURN.java
+++ b/src/main/java/org/apache/bcel/generic/LRETURN.java
@@ -21,9 +21,9 @@
/**
* LRETURN - Return long from method
*
- *
+ *
* Stack: ..., value.word1, value.word2 -> <empty>
- *
+ *
*/
public class LRETURN extends ReturnInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/LSHL.java b/src/main/java/org/apache/bcel/generic/LSHL.java
index b7eb217771..91f5e2e21a 100644
--- a/src/main/java/org/apache/bcel/generic/LSHL.java
+++ b/src/main/java/org/apache/bcel/generic/LSHL.java
@@ -21,9 +21,9 @@
/**
* LSHL - Arithmetic shift left long
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2 -> ..., result.word1, result.word2
- *
+ *
*/
public class LSHL extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/LSHR.java b/src/main/java/org/apache/bcel/generic/LSHR.java
index 00ee22f7fb..417bb7e287 100644
--- a/src/main/java/org/apache/bcel/generic/LSHR.java
+++ b/src/main/java/org/apache/bcel/generic/LSHR.java
@@ -21,9 +21,9 @@
/**
* LSHR - Arithmetic shift right long
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2 -> ..., result.word1, result.word2
- *
+ *
*/
public class LSHR extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/LSTORE.java b/src/main/java/org/apache/bcel/generic/LSTORE.java
index 3fa4583a70..43f15ce0ed 100644
--- a/src/main/java/org/apache/bcel/generic/LSTORE.java
+++ b/src/main/java/org/apache/bcel/generic/LSTORE.java
@@ -21,9 +21,9 @@
/**
* LSTORE - Store long into local variable
*
- *
+ *
* Stack: ..., value.word1, value.word2 -> ...
- *
+ *
*/
public class LSTORE extends StoreInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/LSUB.java b/src/main/java/org/apache/bcel/generic/LSUB.java
index 8edecde170..f768ab79fd 100644
--- a/src/main/java/org/apache/bcel/generic/LSUB.java
+++ b/src/main/java/org/apache/bcel/generic/LSUB.java
@@ -21,9 +21,9 @@
/**
* LSUB - Substract longs
*
- *
+ *
* Stack: ..., value1.word1, value1.word2, value2.word1, value2.word2 ->
- *
+ *
*
* ..., result.word1, result.word2
*/
diff --git a/src/main/java/org/apache/bcel/generic/LUSHR.java b/src/main/java/org/apache/bcel/generic/LUSHR.java
index daa56d70a3..69c023ba26 100644
--- a/src/main/java/org/apache/bcel/generic/LUSHR.java
+++ b/src/main/java/org/apache/bcel/generic/LUSHR.java
@@ -21,9 +21,9 @@
/**
* LUSHR - Logical shift right long
*
- *
+ *
* Stack: ..., value1, value2 -> ..., result
- *
+ *
*/
public class LUSHR extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/LXOR.java b/src/main/java/org/apache/bcel/generic/LXOR.java
index 928ac48fca..f2176dec74 100644
--- a/src/main/java/org/apache/bcel/generic/LXOR.java
+++ b/src/main/java/org/apache/bcel/generic/LXOR.java
@@ -21,9 +21,9 @@
/**
* LXOR - Bitwise XOR long
*
- *
+ *
* Stack: ..., value1, value2 -> ..., result
- *
+ *
*/
public class LXOR extends ArithmeticInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/MONITORENTER.java b/src/main/java/org/apache/bcel/generic/MONITORENTER.java
index 78ab9453b4..0601df7427 100644
--- a/src/main/java/org/apache/bcel/generic/MONITORENTER.java
+++ b/src/main/java/org/apache/bcel/generic/MONITORENTER.java
@@ -23,9 +23,9 @@
/**
* MONITORENTER - Enter monitor for object
*
- *
+ *
* Stack: ..., objectref -> ...
- *
+ *
*/
public class MONITORENTER extends Instruction implements ExceptionThrower, StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/MONITOREXIT.java b/src/main/java/org/apache/bcel/generic/MONITOREXIT.java
index 232cd57a70..04e1375864 100644
--- a/src/main/java/org/apache/bcel/generic/MONITOREXIT.java
+++ b/src/main/java/org/apache/bcel/generic/MONITOREXIT.java
@@ -23,9 +23,9 @@
/**
* MONITOREXIT - Exit monitor for object
*
- *
+ *
* Stack: ..., objectref -> ...
- *
+ *
*/
public class MONITOREXIT extends Instruction implements ExceptionThrower, StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/MULTIANEWARRAY.java b/src/main/java/org/apache/bcel/generic/MULTIANEWARRAY.java
index 510d004489..5c2899763f 100644
--- a/src/main/java/org/apache/bcel/generic/MULTIANEWARRAY.java
+++ b/src/main/java/org/apache/bcel/generic/MULTIANEWARRAY.java
@@ -28,9 +28,9 @@
/**
* MULTIANEWARRAY - Create new mutidimensional array of references
*
- *
+ *
* Stack: ..., count1, [count2, ...] -> ..., arrayref
- *
+ *
*/
public class MULTIANEWARRAY extends CPInstruction implements LoadClass, AllocationInstruction, ExceptionThrower {
diff --git a/src/main/java/org/apache/bcel/generic/NEW.java b/src/main/java/org/apache/bcel/generic/NEW.java
index fecee5ce6d..1e5a40f9a6 100644
--- a/src/main/java/org/apache/bcel/generic/NEW.java
+++ b/src/main/java/org/apache/bcel/generic/NEW.java
@@ -23,9 +23,9 @@
/**
* NEW - Create new object
*
- *
+ *
* Stack: ... -> ..., objectref
- *
+ *
*/
public class NEW extends CPInstruction implements LoadClass, AllocationInstruction, ExceptionThrower, StackProducer {
diff --git a/src/main/java/org/apache/bcel/generic/NEWARRAY.java b/src/main/java/org/apache/bcel/generic/NEWARRAY.java
index 8ac94470f1..38177be487 100644
--- a/src/main/java/org/apache/bcel/generic/NEWARRAY.java
+++ b/src/main/java/org/apache/bcel/generic/NEWARRAY.java
@@ -27,9 +27,9 @@
/**
* NEWARRAY - Create new array of basic type (int, short, ...)
*
- *
+ *
* Stack: ..., count -> ..., arrayref
- *
+ *
*
* type must be one of T_INT, T_SHORT, ...
*/
diff --git a/src/main/java/org/apache/bcel/generic/POP.java b/src/main/java/org/apache/bcel/generic/POP.java
index fb18a9859d..a2ddb28431 100644
--- a/src/main/java/org/apache/bcel/generic/POP.java
+++ b/src/main/java/org/apache/bcel/generic/POP.java
@@ -21,9 +21,9 @@
/**
* POP - Pop top operand stack word
*
- *
+ *
* Stack: ..., word -> ...
- *
+ *
*/
public class POP extends StackInstruction implements PopInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/POP2.java b/src/main/java/org/apache/bcel/generic/POP2.java
index c63390c803..8d4a5717c8 100644
--- a/src/main/java/org/apache/bcel/generic/POP2.java
+++ b/src/main/java/org/apache/bcel/generic/POP2.java
@@ -21,9 +21,9 @@
/**
* POP2 - Pop two top operand stack words
*
- *
+ *
* Stack: ..., word2, word1 -> ...
- *
+ *
*/
public class POP2 extends StackInstruction implements PopInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/PUTFIELD.java b/src/main/java/org/apache/bcel/generic/PUTFIELD.java
index a42f61ab66..1f4709951d 100644
--- a/src/main/java/org/apache/bcel/generic/PUTFIELD.java
+++ b/src/main/java/org/apache/bcel/generic/PUTFIELD.java
@@ -24,15 +24,15 @@
/**
* PUTFIELD - Put field in object
*
- *
+ *
* Stack: ..., objectref, value -> ...
- *
+ *
*
* OR
*
- *
+ *
* Stack: ..., objectref, value.word1, value.word2 -> ...
- *
+ *
*/
public class PUTFIELD extends FieldInstruction implements PopInstruction, ExceptionThrower {
diff --git a/src/main/java/org/apache/bcel/generic/PUTSTATIC.java b/src/main/java/org/apache/bcel/generic/PUTSTATIC.java
index 03ee250a1b..8ace429c54 100644
--- a/src/main/java/org/apache/bcel/generic/PUTSTATIC.java
+++ b/src/main/java/org/apache/bcel/generic/PUTSTATIC.java
@@ -24,15 +24,15 @@
/**
* PUTSTATIC - Put static field in class
*
- *
+ *
* Stack: ..., value -> ...
- *
+ *
*
* OR
*
- *
+ *
* Stack: ..., value.word1, value.word2 -> ...
- *
+ *
*/
public class PUTSTATIC extends FieldInstruction implements ExceptionThrower, PopInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/RET.java b/src/main/java/org/apache/bcel/generic/RET.java
index b2890970cd..25c7a9f4d2 100644
--- a/src/main/java/org/apache/bcel/generic/RET.java
+++ b/src/main/java/org/apache/bcel/generic/RET.java
@@ -26,9 +26,9 @@
/**
* RET - Return from subroutine
*
- *
+ *
* Stack: ... -> ...
- *
+ *
*/
public class RET extends Instruction implements IndexedInstruction, TypedInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/RETURN.java b/src/main/java/org/apache/bcel/generic/RETURN.java
index a97f1e4d71..23a3500da8 100644
--- a/src/main/java/org/apache/bcel/generic/RETURN.java
+++ b/src/main/java/org/apache/bcel/generic/RETURN.java
@@ -21,9 +21,9 @@
/**
* RETURN - Return from void method
*
- *
+ *
* Stack: ... -> <empty>
- *
+ *
*/
public class RETURN extends ReturnInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/SALOAD.java b/src/main/java/org/apache/bcel/generic/SALOAD.java
index 7c156dfe89..bfa63f6d33 100644
--- a/src/main/java/org/apache/bcel/generic/SALOAD.java
+++ b/src/main/java/org/apache/bcel/generic/SALOAD.java
@@ -21,9 +21,9 @@
/**
* SALOAD - Load short from array
*
- *
+ *
* Stack: ..., arrayref, index -> ..., value
- *
+ *
*/
public class SALOAD extends ArrayInstruction implements StackProducer {
diff --git a/src/main/java/org/apache/bcel/generic/SASTORE.java b/src/main/java/org/apache/bcel/generic/SASTORE.java
index d5581fc956..9d8172e4b7 100644
--- a/src/main/java/org/apache/bcel/generic/SASTORE.java
+++ b/src/main/java/org/apache/bcel/generic/SASTORE.java
@@ -21,9 +21,9 @@
/**
* SASTORE - Store into short array
*
- *
+ *
* Stack: ..., arrayref, index, value -> ...
- *
+ *
*/
public class SASTORE extends ArrayInstruction implements StackConsumer {
diff --git a/src/main/java/org/apache/bcel/generic/SIPUSH.java b/src/main/java/org/apache/bcel/generic/SIPUSH.java
index 3cc7d5daa0..05d0f1ea85 100644
--- a/src/main/java/org/apache/bcel/generic/SIPUSH.java
+++ b/src/main/java/org/apache/bcel/generic/SIPUSH.java
@@ -26,9 +26,9 @@
/**
* SIPUSH - Push short
*
- *
+ *
* Stack: ... -> ..., value
- *
+ *
*/
public class SIPUSH extends Instruction implements ConstantPushInstruction {
diff --git a/src/main/java/org/apache/bcel/generic/SWAP.java b/src/main/java/org/apache/bcel/generic/SWAP.java
index 6deaaa4ebc..e1c59167e3 100644
--- a/src/main/java/org/apache/bcel/generic/SWAP.java
+++ b/src/main/java/org/apache/bcel/generic/SWAP.java
@@ -21,9 +21,9 @@
/**
* SWAP - Swa top operand stack word
*
- *
+ *
* Stack: ..., word2, word1 -> ..., word1, word2
- *
+ *
*/
public class SWAP extends StackInstruction implements StackConsumer, StackProducer {
From 5aa8f9311ea98ca387452ee1bf13676edff4ca7d Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 09:03:28 -0500
Subject: [PATCH 74/83] Use lower case Javadoc tags
---
src/main/java/org/apache/bcel/classfile/Utility.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/bcel/classfile/Utility.java b/src/main/java/org/apache/bcel/classfile/Utility.java
index 5c003b1577..f201ced690 100644
--- a/src/main/java/org/apache/bcel/classfile/Utility.java
+++ b/src/main/java/org/apache/bcel/classfile/Utility.java
@@ -270,7 +270,7 @@ public static String codeToString(final byte[] code, final ConstantPool constant
*
* @param code byte code array.
* @param constantPool Array of constants.
- * @param index offset in 'code' array (number of opcodes, not bytes!).
+ * @param index offset in 'code' array (number of opcodes, not bytes!).
* @param length number of opcodes to decompile, -1 for all.
* @param verbose be verbose, for example print constant pool index.
* @return String representation of byte codes.
From 1e4023d82dbe6e223ea12dc0063bf58d1cd91af7 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 09:07:18 -0500
Subject: [PATCH 75/83] Deprecate
org.apache.bcel.verifier.exc.Utility.getStackTrace(Throwable)
---
src/changes/changes.xml | 1 +
src/main/java/org/apache/bcel/verifier/exc/Utility.java | 9 +++------
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index bc6820af41..f979dd528b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -63,6 +63,7 @@ The type attribute can be add,update,fix,remove.
Fix constant pool module access test on Java 26 and above #492.
Deprecate org.apache.bcel.classfile.Utility.Utility().
+ Deprecate org.apache.bcel.verifier.exc.Utility.getStackTrace(Throwable).
Add support for permitted subclasses #493.
Add RecordComponentInfo.getAttribute(byte tag)#494.
diff --git a/src/main/java/org/apache/bcel/verifier/exc/Utility.java b/src/main/java/org/apache/bcel/verifier/exc/Utility.java
index b0d06c8c74..fae5dfefa8 100644
--- a/src/main/java/org/apache/bcel/verifier/exc/Utility.java
+++ b/src/main/java/org/apache/bcel/verifier/exc/Utility.java
@@ -18,8 +18,7 @@
*/
package org.apache.bcel.verifier.exc;
-import java.io.PrintWriter;
-import java.io.StringWriter;
+import org.apache.commons.lang3.exception.ExceptionUtils;
/**
* A utility class providing convenience methods concerning Throwable instances.
@@ -33,12 +32,10 @@ public final class Utility {
*
* @param t the Throwable instance.
* @return the stack trace as a String.
+ * @deprecated Use {@link ExceptionUtils#getStackTrace(Throwable)}.
*/
public static String getStackTrace(final Throwable t) {
- final StringWriter sw = new StringWriter();
- final PrintWriter pw = new PrintWriter(sw);
- t.printStackTrace(pw);
- return sw.toString();
+ return ExceptionUtils.getStackTrace(t);
}
/** This class is not instantiable. */
From cb5096aa85b0a1c3c1e37beed95ca93c9e492069 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Sat, 14 Feb 2026 09:08:06 -0500
Subject: [PATCH 76/83] ix all Javadoc warnings and enforce checks by default
---
src/changes/changes.xml | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index f979dd528b..54f546a7ad 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -64,6 +64,7 @@ The type attribute can be add,update,fix,remove.
Fix constant pool module access test on Java 26 and above #492.
Deprecate org.apache.bcel.classfile.Utility.Utility().
Deprecate org.apache.bcel.verifier.exc.Utility.getStackTrace(Throwable).
+ Fix all Javadoc warnings and enforce checks by default.
Add support for permitted subclasses #493.
Add RecordComponentInfo.getAttribute(byte tag)#494.
From f212f20615d2a8d4d4bc2b637c4765104601124f Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Fri, 20 Feb 2026 07:41:46 -0500
Subject: [PATCH 77/83] Bump github/codeql-action from 4.32.2 to 4.32.3
---
.github/workflows/codeql-analysis.yml | 6 +++---
.github/workflows/scorecards-analysis.yml | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 9ccfb03278..b1f4f562df 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -58,7 +58,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2
+ uses: github/codeql-action/init@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -69,7 +69,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2
+ uses: github/codeql-action/autobuild@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
# âšī¸ Command-line programs to run using the OS shell.
# đ https://git.io/JvXDl
@@ -83,4 +83,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2
+ uses: github/codeql-action/analyze@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml
index 818c876ece..799da79a83 100644
--- a/.github/workflows/scorecards-analysis.yml
+++ b/.github/workflows/scorecards-analysis.yml
@@ -64,6 +64,6 @@ jobs:
retention-days: 5
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4.32.2
+ uses: github/codeql-action/upload-sarif@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
with:
sarif_file: results.sarif
From d9870f07ce016aa7b329d8c0be1987fb9b4c1967 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Mon, 23 Feb 2026 10:58:22 -0500
Subject: [PATCH 78/83] Bump github/codeql-action from 4.32.0 to 4.32.4
---
.github/workflows/codeql-analysis.yml | 6 +++---
.github/workflows/scorecards-analysis.yml | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index b1f4f562df..6c4aa3f571 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -58,7 +58,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
+ uses: github/codeql-action/init@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -69,7 +69,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
+ uses: github/codeql-action/autobuild@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
# âšī¸ Command-line programs to run using the OS shell.
# đ https://git.io/JvXDl
@@ -83,4 +83,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
+ uses: github/codeql-action/analyze@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml
index 799da79a83..9fc7044eb2 100644
--- a/.github/workflows/scorecards-analysis.yml
+++ b/.github/workflows/scorecards-analysis.yml
@@ -64,6 +64,6 @@ jobs:
retention-days: 5
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@9e907b5e64f6b83e7804b09294d44122997950d6 # v4.32.3
+ uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
with:
sarif_file: results.sarif
From 25e99d85c406d5a3dd03c311591b2e869620905e Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Fri, 27 Feb 2026 20:31:42 -0500
Subject: [PATCH 79/83] Bump org.apache.commons:commons-parent from 96 to 97.
---
pom.xml | 2 +-
src/changes/changes.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index 3c97d8b0be..90934fd3ae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
org.apache.commons
commons-parent
- 96
+ 97
org.apache.bcel
bcel
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 54f546a7ad..26141610aa 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -69,7 +69,7 @@ The type attribute can be add,update,fix,remove.
Add support for permitted subclasses #493.
Add RecordComponentInfo.getAttribute(byte tag)#494.
- Bump org.apache.commons:commons-parent from 95 to 96.
+ Bump org.apache.commons:commons-parent from 95 to 97.
From 47e75d5dc0497d6ab33aa08e9761770d43e22cdf Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Mon, 2 Mar 2026 08:33:46 -0500
Subject: [PATCH 80/83] Bump github/codeql-action from 4.32.4 to 4.32.5
---
.github/workflows/codeql-analysis.yml | 6 +++---
.github/workflows/scorecards-analysis.yml | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 6c4aa3f571..e2ee451b4e 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -58,7 +58,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
+ uses: github/codeql-action/init@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -69,7 +69,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
+ uses: github/codeql-action/autobuild@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5
# âšī¸ Command-line programs to run using the OS shell.
# đ https://git.io/JvXDl
@@ -83,4 +83,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
+ uses: github/codeql-action/analyze@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5
diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml
index 9fc7044eb2..65fa406aa9 100644
--- a/.github/workflows/scorecards-analysis.yml
+++ b/.github/workflows/scorecards-analysis.yml
@@ -64,6 +64,6 @@ jobs:
retention-days: 5
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
+ uses: github/codeql-action/upload-sarif@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5
with:
sarif_file: results.sarif
From 2f4737448ad24572dbed044887cdd93cdc84c934 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Fri, 6 Mar 2026 07:35:33 -0500
Subject: [PATCH 81/83] Bump github/codeql-action from 4.32.0 to 4.32.6
---
.github/workflows/codeql-analysis.yml | 6 +++---
.github/workflows/scorecards-analysis.yml | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index e2ee451b4e..4c52d9d27d 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -58,7 +58,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5
+ uses: github/codeql-action/init@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -69,7 +69,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5
+ uses: github/codeql-action/autobuild@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6
# âšī¸ Command-line programs to run using the OS shell.
# đ https://git.io/JvXDl
@@ -83,4 +83,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5
+ uses: github/codeql-action/analyze@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6
diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml
index 65fa406aa9..8c86e78553 100644
--- a/.github/workflows/scorecards-analysis.yml
+++ b/.github/workflows/scorecards-analysis.yml
@@ -64,6 +64,6 @@ jobs:
retention-days: 5
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5
+ uses: github/codeql-action/upload-sarif@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6
with:
sarif_file: results.sarif
From 795d300e703acb625fd1a22e0841f8d55e756b84 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Mon, 9 Mar 2026 08:37:53 -0400
Subject: [PATCH 82/83] Bump actions/upload-artifact from 6.0.0 to 7.0.0
---
.github/workflows/scorecards-analysis.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml
index 8c86e78553..a35bf86eeb 100644
--- a/.github/workflows/scorecards-analysis.yml
+++ b/.github/workflows/scorecards-analysis.yml
@@ -57,7 +57,7 @@ jobs:
publish_results: true
- name: "Upload artifact"
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
+ uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: SARIF file
path: results.sarif
From 46fd247b20b4d3d64790bc32c31ea9caaa6da244 Mon Sep 17 00:00:00 2001
From: Gary Gregory
Date: Thu, 19 Mar 2026 23:46:21 +0000
Subject: [PATCH 83/83] Add a reference to safe deserlialization
---
src/site/xdoc/security.xml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/site/xdoc/security.xml b/src/site/xdoc/security.xml
index d1e3c9ff1f..d8f2588804 100644
--- a/src/site/xdoc/security.xml
+++ b/src/site/xdoc/security.xml
@@ -55,5 +55,10 @@
+