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

[commons-bcel] 01/02: Use streams, less boilerplate, Javadoc

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

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

commit 9b6f88a4959186b6169035b1d06726700a3244b8
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Mon Aug 15 15:17:25 2022 -0400

    Use streams, less boilerplate, Javadoc
---
 .../org/apache/bcel/classfile/AnnotationEntry.java |  28 +--
 .../java/org/apache/bcel/classfile/Attribute.java  |  12 +-
 .../java/org/apache/bcel/classfile/Deprecated.java |   2 +-
 .../apache/bcel/classfile/DescendingVisitor.java   | 248 +++++++--------------
 .../org/apache/bcel/classfile/ExceptionTable.java  |  13 +-
 .../org/apache/bcel/classfile/FieldOrMethod.java   |  29 ++-
 .../java/org/apache/bcel/generic/ClassGen.java     |  28 +--
 .../java/org/apache/bcel/generic/FieldGen.java     |  15 +-
 8 files changed, 126 insertions(+), 249 deletions(-)

diff --git a/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java b/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java
index 543f1ecc..36b5c963 100644
--- a/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java
+++ b/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java
@@ -21,13 +21,13 @@ import java.io.DataInput;
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
+import java.util.stream.Stream;
 
 import org.apache.bcel.Const;
 
 /**
- * represents one annotation in the annotation table
+ * Represents one annotation in the annotation table
  *
  * @since 6.0
  */
@@ -37,36 +37,32 @@ public class AnnotationEntry implements Node {
 
     public static AnnotationEntry[] createAnnotationEntries(final Attribute[] attrs) {
         // Find attributes that contain annotation data
-        final List<AnnotationEntry> accumulatedAnnotations = new ArrayList<>(attrs.length);
-        for (final Attribute attribute : attrs) {
-            if (attribute instanceof Annotations) {
-                final Annotations runtimeAnnotations = (Annotations) attribute;
-                Collections.addAll(accumulatedAnnotations, runtimeAnnotations.getAnnotationEntries());
-            }
-        }
-        return accumulatedAnnotations.toArray(AnnotationEntry.EMPTY_ARRAY);
+        return Stream.of(attrs).filter(Annotations.class::isInstance)
+            .flatMap(e -> Stream.of(((Annotations) e).getAnnotationEntries())).toArray(AnnotationEntry[]::new);
     }
-    /*
+
+    /**
      * Factory method to create an AnnotionEntry from a DataInput
      *
      * @param input
      * @param constantPool
      * @param isRuntimeVisible
      * @return the entry
-     * @throws IOException
+     * @throws IOException if an I/O error occurs.
      */
-    public static AnnotationEntry read(final DataInput input, final ConstantPool constant_pool, final boolean isRuntimeVisible) throws IOException {
+    public static AnnotationEntry read(final DataInput input, final ConstantPool constantPool, final boolean isRuntimeVisible) throws IOException {
 
-        final AnnotationEntry annotationEntry = new AnnotationEntry(input.readUnsignedShort(), constant_pool, isRuntimeVisible);
+        final AnnotationEntry annotationEntry = new AnnotationEntry(input.readUnsignedShort(), constantPool, isRuntimeVisible);
         final int num_element_value_pairs = input.readUnsignedShort();
         annotationEntry.elementValuePairs = new ArrayList<>();
         for (int i = 0; i < num_element_value_pairs; i++) {
             annotationEntry.elementValuePairs.add(
-                    new ElementValuePair(input.readUnsignedShort(), ElementValue.readElementValue(input, constant_pool),
-                    constant_pool));
+                    new ElementValuePair(input.readUnsignedShort(), ElementValue.readElementValue(input, constantPool),
+                    constantPool));
         }
         return annotationEntry;
     }
+
     private final int typeIndex;
 
     private final ConstantPool constantPool;
diff --git a/src/main/java/org/apache/bcel/classfile/Attribute.java b/src/main/java/org/apache/bcel/classfile/Attribute.java
index b2037224..f48d3562 100644
--- a/src/main/java/org/apache/bcel/classfile/Attribute.java
+++ b/src/main/java/org/apache/bcel/classfile/Attribute.java
@@ -104,12 +104,11 @@ public abstract class Attribute implements Cloneable, Node {
      * @param file Input stream
      * @param constant_pool Array of constants
      * @return Attribute
-     * @throws IOException
-     * @throws ClassFormatException
+     * @throws IOException if an I/O error occurs.
      * @since 6.0
      */
     public static Attribute readAttribute(final DataInput file, final ConstantPool constant_pool)
-            throws IOException, ClassFormatException
+            throws IOException
     {
         byte tag = Const.ATTR_UNKNOWN; // Unknown attribute
         // Get class name from constant pool via `name_index' indirection
@@ -216,11 +215,10 @@ public abstract class Attribute implements Cloneable, Node {
      * @param file Input stream
      * @param constant_pool Array of constants
      * @return Attribute
-     * @throws IOException
-     * @throws ClassFormatException
+     * @throws IOException if an I/O error occurs.
      */
     public static Attribute readAttribute(final DataInputStream file, final ConstantPool constant_pool)
-            throws IOException, ClassFormatException
+            throws IOException
     {
         return readAttribute((DataInput) file, constant_pool);
     }
@@ -309,7 +307,7 @@ public abstract class Attribute implements Cloneable, Node {
      *
      * @param file
      *            Output file stream
-     * @throws IOException
+     * @throws IOException if an I/O error occurs.
      */
     public void dump(final DataOutputStream file) throws IOException
     {
diff --git a/src/main/java/org/apache/bcel/classfile/Deprecated.java b/src/main/java/org/apache/bcel/classfile/Deprecated.java
index d136525f..24e8da9b 100644
--- a/src/main/java/org/apache/bcel/classfile/Deprecated.java
+++ b/src/main/java/org/apache/bcel/classfile/Deprecated.java
@@ -108,7 +108,7 @@ public final class Deprecated extends Attribute {
      * Dump source file attribute to file stream in binary format.
      *
      * @param file Output file stream
-     * @throws IOException
+     * @throws IOException if an I/O error occurs.
      */
     @Override
     public void dump( final DataOutputStream file ) throws IOException {
diff --git a/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java b/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
index 3fed1457..c87a1759 100644
--- a/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
+++ b/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
@@ -17,16 +17,16 @@
  */
 package org.apache.bcel.classfile;
 
+import java.util.Objects;
 import java.util.Stack;
+import java.util.stream.Stream;
 
 /**
- * Traverses a JavaClass with another Visitor object 'piggy-backed' that is
- * applied to all components of a JavaClass object. I.e. this class supplies the
- * traversal strategy, other classes can make use of it.
+ * Traverses a JavaClass with another Visitor object 'piggy-backed' that is applied to all components of a JavaClass
+ * object. I.e. this class supplies the traversal strategy, other classes can make use of it.
  *
  */
-public class DescendingVisitor implements Visitor
-{
+public class DescendingVisitor implements Visitor {
     private final JavaClass clazz;
 
     private final Visitor visitor;
@@ -34,43 +34,39 @@ public class DescendingVisitor implements Visitor
     private final Stack<Object> stack = new Stack<>();
 
     /**
-     * @param clazz
-     *            Class to traverse
-     * @param visitor
-     *            visitor object to apply to all components
+     * @param clazz Class to traverse
+     * @param visitor visitor object to apply to all components
      */
-    public DescendingVisitor(final JavaClass clazz, final Visitor visitor)
-    {
+    public DescendingVisitor(final JavaClass clazz, final Visitor visitor) {
         this.clazz = clazz;
         this.visitor = visitor;
     }
 
+    private <E extends Node> void accept(final E[] node) {
+        Stream.of(node).forEach(e -> e.accept(this));
+    }
+
     /**
      * @return current object
      */
-    public Object current()
-    {
+    public Object current() {
         return stack.peek();
     }
 
     /**
      * @return container of current entitity, i.e., predecessor during traversal
      */
-    public Object predecessor()
-    {
+    public Object predecessor() {
         return predecessor(0);
     }
 
     /**
-     * @param level
-     *            nesting level, i.e., 0 returns the direct predecessor
+     * @param level nesting level, i.e., 0 returns the direct predecessor
      * @return container of current entitity, i.e., predecessor during traversal
      */
-    public Object predecessor(final int level)
-    {
+    public Object predecessor(final int level) {
         final int size = stack.size();
-        if (size < 2 || level < 0)
-        {
+        if (size < 2 || level < 0) {
             return null;
         }
         return stack.elementAt(size - (level + 2)); // size - 1 == current
@@ -79,8 +75,7 @@ public class DescendingVisitor implements Visitor
     /**
      * Start traversal.
      */
-    public void visit()
-    {
+    public void visit() {
         clazz.accept(this);
     }
 
@@ -88,13 +83,10 @@ public class DescendingVisitor implements Visitor
      * @since 6.0
      */
     @Override
-    public void visitAnnotation(final Annotations annotation)
-    {
+    public void visitAnnotation(final Annotations annotation) {
         stack.push(annotation);
         annotation.accept(visitor);
-        for (final AnnotationEntry entrie : annotation.getAnnotationEntries()) {
-            entrie.accept(this);
-        }
+        accept(annotation.getAnnotationEntries());
         stack.pop();
     }
 
@@ -102,8 +94,7 @@ public class DescendingVisitor implements Visitor
      * @since 6.0
      */
     @Override
-    public void visitAnnotationDefault(final AnnotationDefault obj)
-    {
+    public void visitAnnotationDefault(final AnnotationDefault obj) {
         stack.push(obj);
         obj.accept(visitor);
         stack.pop();
@@ -113,8 +104,7 @@ public class DescendingVisitor implements Visitor
      * @since 6.0
      */
     @Override
-    public void visitAnnotationEntry(final AnnotationEntry annotationEntry)
-    {
+    public void visitAnnotationEntry(final AnnotationEntry annotationEntry) {
         stack.push(annotationEntry);
         annotationEntry.accept(visitor);
         stack.pop();
@@ -124,51 +114,42 @@ public class DescendingVisitor implements Visitor
      * @since 6.0
      */
     @Override
-    public void visitBootstrapMethods(final BootstrapMethods bm)
-    {
+    public void visitBootstrapMethods(final BootstrapMethods bm) {
         stack.push(bm);
         bm.accept(visitor);
         // BootstrapMethod[] bms = bm.getBootstrapMethods();
         // for (int i = 0; i < bms.length; i++)
         // {
-        //     bms[i].accept(this);
+        // bms[i].accept(this);
         // }
         stack.pop();
     }
 
     @Override
-    public void visitCode(final Code code)
-    {
+    public void visitCode(final Code code) {
         stack.push(code);
         code.accept(visitor);
-        for (final CodeException element : code.getExceptionTable()) {
-            element.accept(this);
-        }
-        for (final Attribute attribute : code.getAttributes()) {
-            attribute.accept(this);
-        }
+        accept(code.getExceptionTable());
+        accept(code.getAttributes());
         stack.pop();
     }
 
     @Override
-    public void visitCodeException(final CodeException ce)
-    {
+    public void visitCodeException(final CodeException ce) {
         stack.push(ce);
         ce.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitConstantClass(final ConstantClass constant)
-    {
+    public void visitConstantClass(final ConstantClass constant) {
         stack.push(constant);
         constant.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitConstantDouble(final ConstantDouble constant)
-    {
+    public void visitConstantDouble(final ConstantDouble constant) {
         stack.push(constant);
         constant.accept(visitor);
         stack.pop();
@@ -183,33 +164,28 @@ public class DescendingVisitor implements Visitor
     }
 
     @Override
-    public void visitConstantFieldref(final ConstantFieldref constant)
-    {
+    public void visitConstantFieldref(final ConstantFieldref constant) {
         stack.push(constant);
         constant.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitConstantFloat(final ConstantFloat constant)
-    {
+    public void visitConstantFloat(final ConstantFloat constant) {
         stack.push(constant);
         constant.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitConstantInteger(final ConstantInteger constant)
-    {
+    public void visitConstantInteger(final ConstantInteger constant) {
         stack.push(constant);
         constant.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitConstantInterfaceMethodref(
-            final ConstantInterfaceMethodref constant)
-    {
+    public void visitConstantInterfaceMethodref(final ConstantInterfaceMethodref constant) {
         stack.push(constant);
         constant.accept(visitor);
         stack.pop();
@@ -219,17 +195,14 @@ public class DescendingVisitor implements Visitor
      * @since 6.0
      */
     @Override
-    public void visitConstantInvokeDynamic(
-            final ConstantInvokeDynamic constant)
-    {
+    public void visitConstantInvokeDynamic(final ConstantInvokeDynamic constant) {
         stack.push(constant);
         constant.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitConstantLong(final ConstantLong constant)
-    {
+    public void visitConstantLong(final ConstantLong constant) {
         stack.push(constant);
         constant.accept(visitor);
         stack.pop();
@@ -244,8 +217,7 @@ public class DescendingVisitor implements Visitor
     }
 
     @Override
-    public void visitConstantMethodref(final ConstantMethodref constant)
-    {
+    public void visitConstantMethodref(final ConstantMethodref constant) {
         stack.push(constant);
         constant.accept(visitor);
         stack.pop();
@@ -268,8 +240,7 @@ public class DescendingVisitor implements Visitor
     }
 
     @Override
-    public void visitConstantNameAndType(final ConstantNameAndType constant)
-    {
+    public void visitConstantNameAndType(final ConstantNameAndType constant) {
         stack.push(constant);
         constant.accept(visitor);
         stack.pop();
@@ -284,48 +255,36 @@ public class DescendingVisitor implements Visitor
     }
 
     @Override
-    public void visitConstantPool(final ConstantPool cp)
-    {
+    public void visitConstantPool(final ConstantPool cp) {
         stack.push(cp);
         cp.accept(visitor);
-        final Constant[] constants = cp.getConstantPool();
-        for (int i = 1; i < constants.length; i++)
-        {
-            if (constants[i] != null)
-            {
-                constants[i].accept(this);
-            }
-        }
+        Stream.of(cp.getConstantPool()).filter(Objects::nonNull).forEach(e -> e.accept(this));
         stack.pop();
     }
 
     @Override
-    public void visitConstantString(final ConstantString constant)
-    {
+    public void visitConstantString(final ConstantString constant) {
         stack.push(constant);
         constant.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitConstantUtf8(final ConstantUtf8 constant)
-    {
+    public void visitConstantUtf8(final ConstantUtf8 constant) {
         stack.push(constant);
         constant.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitConstantValue(final ConstantValue cv)
-    {
+    public void visitConstantValue(final ConstantValue cv) {
         stack.push(cv);
         cv.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitDeprecated(final Deprecated attribute)
-    {
+    public void visitDeprecated(final Deprecated attribute) {
         stack.push(attribute);
         attribute.accept(visitor);
         stack.pop();
@@ -335,104 +294,80 @@ public class DescendingVisitor implements Visitor
      * @since 6.0
      */
     @Override
-    public void visitEnclosingMethod(final EnclosingMethod obj)
-    {
+    public void visitEnclosingMethod(final EnclosingMethod obj) {
         stack.push(obj);
         obj.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitExceptionTable(final ExceptionTable table)
-    {
+    public void visitExceptionTable(final ExceptionTable table) {
         stack.push(table);
         table.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitField(final Field field)
-    {
+    public void visitField(final Field field) {
         stack.push(field);
         field.accept(visitor);
-        for (final Attribute attribute : field.getAttributes()) {
-            attribute.accept(this);
-        }
+        accept(field.getAttributes());
         stack.pop();
     }
 
     @Override
-    public void visitInnerClass(final InnerClass inner)
-    {
+    public void visitInnerClass(final InnerClass inner) {
         stack.push(inner);
         inner.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitInnerClasses(final InnerClasses ic)
-    {
+    public void visitInnerClasses(final InnerClasses ic) {
         stack.push(ic);
         ic.accept(visitor);
-        for (final InnerClass ic2 : ic.getInnerClasses()) {
-            ic2.accept(this);
-        }
+        accept(ic.getInnerClasses());
         stack.pop();
     }
 
     @Override
-    public void visitJavaClass(final JavaClass _clazz)
-    {
+    public void visitJavaClass(final JavaClass _clazz) {
         stack.push(_clazz);
         _clazz.accept(visitor);
-        for (final Field field : _clazz.getFields()) {
-            field.accept(this);
-        }
-        for (final Method method : _clazz.getMethods()) {
-            method.accept(this);
-        }
-        for (final Attribute attribute : _clazz.getAttributes()) {
-            attribute.accept(this);
-        }
+        accept(_clazz.getFields());
+        accept(_clazz.getMethods());
+        accept(_clazz.getAttributes());
         _clazz.getConstantPool().accept(this);
         stack.pop();
     }
 
     @Override
-    public void visitLineNumber(final LineNumber number)
-    {
+    public void visitLineNumber(final LineNumber number) {
         stack.push(number);
         number.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitLineNumberTable(final LineNumberTable table)
-    {
+    public void visitLineNumberTable(final LineNumberTable table) {
         stack.push(table);
         table.accept(visitor);
-        for (final LineNumber number : table.getLineNumberTable()) {
-            number.accept(this);
-        }
+        accept(table.getLineNumberTable());
         stack.pop();
     }
 
     @Override
-    public void visitLocalVariable(final LocalVariable var)
-    {
+    public void visitLocalVariable(final LocalVariable var) {
         stack.push(var);
         var.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitLocalVariableTable(final LocalVariableTable table)
-    {
+    public void visitLocalVariableTable(final LocalVariableTable table) {
         stack.push(table);
         table.accept(visitor);
-        for (final LocalVariable var : table.getLocalVariableTable()) {
-            var.accept(this);
-        }
+        accept(table.getLocalVariableTable());
         stack.pop();
     }
 
@@ -440,21 +375,17 @@ public class DescendingVisitor implements Visitor
      * @since 6.0
      */
     @Override
-    public void visitLocalVariableTypeTable(final LocalVariableTypeTable obj)
-    {
+    public void visitLocalVariableTypeTable(final LocalVariableTypeTable obj) {
         stack.push(obj);
         obj.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitMethod(final Method method)
-    {
+    public void visitMethod(final Method method) {
         stack.push(method);
         method.accept(visitor);
-        for (final Attribute attribute : method.getAttributes()) {
-            attribute.accept(this);
-        }
+        accept(method.getAttributes());
         stack.pop();
     }
 
@@ -462,8 +393,7 @@ public class DescendingVisitor implements Visitor
      * @since 6.4.0
      */
     @Override
-    public void visitMethodParameter(final MethodParameter obj)
-    {
+    public void visitMethodParameter(final MethodParameter obj) {
         stack.push(obj);
         obj.accept(visitor);
         stack.pop();
@@ -473,13 +403,10 @@ public class DescendingVisitor implements Visitor
      * @since 6.0
      */
     @Override
-    public void visitMethodParameters(final MethodParameters obj)
-    {
+    public void visitMethodParameters(final MethodParameters obj) {
         stack.push(obj);
         obj.accept(visitor);
-        for (final MethodParameter element : obj.getParameters()) {
-            element.accept(this);
-        }
+        Stream.of(obj.getParameters()).forEach(e -> e.accept(this));
         stack.pop();
     }
 
@@ -488,18 +415,10 @@ public class DescendingVisitor implements Visitor
     public void visitModule(final Module obj) {
         stack.push(obj);
         obj.accept(visitor);
-        for (final ModuleRequires element : obj.getRequiresTable()) {
-            element.accept(this);
-        }
-        for (final ModuleExports element : obj.getExportsTable()) {
-            element.accept(this);
-        }
-        for (final ModuleOpens element : obj.getOpensTable()) {
-            element.accept(this);
-        }
-        for (final ModuleProvides element : obj.getProvidesTable()) {
-            element.accept(this);
-        }
+        accept(obj.getRequiresTable());
+        accept(obj.getExportsTable());
+        accept(obj.getOpensTable());
+        accept(obj.getProvidesTable());
         stack.pop();
     }
 
@@ -571,8 +490,7 @@ public class DescendingVisitor implements Visitor
      * @since 6.0
      */
     @Override
-    public void visitParameterAnnotation(final ParameterAnnotations obj)
-    {
+    public void visitParameterAnnotation(final ParameterAnnotations obj) {
         stack.push(obj);
         obj.accept(visitor);
         stack.pop();
@@ -587,51 +505,43 @@ public class DescendingVisitor implements Visitor
     }
 
     @Override
-    public void visitSignature(final Signature attribute)
-    {
+    public void visitSignature(final Signature attribute) {
         stack.push(attribute);
         attribute.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitSourceFile(final SourceFile attribute)
-    {
+    public void visitSourceFile(final SourceFile attribute) {
         stack.push(attribute);
         attribute.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitStackMap(final StackMap table)
-    {
+    public void visitStackMap(final StackMap table) {
         stack.push(table);
         table.accept(visitor);
-        for (final StackMapEntry var : table.getStackMap()) {
-            var.accept(this);
-        }
+        accept(table.getStackMap());
         stack.pop();
     }
 
     @Override
-    public void visitStackMapEntry(final StackMapEntry var)
-    {
+    public void visitStackMapEntry(final StackMapEntry var) {
         stack.push(var);
         var.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitSynthetic(final Synthetic attribute)
-    {
+    public void visitSynthetic(final Synthetic attribute) {
         stack.push(attribute);
         attribute.accept(visitor);
         stack.pop();
     }
 
     @Override
-    public void visitUnknown(final Unknown attribute)
-    {
+    public void visitUnknown(final Unknown attribute) {
         stack.push(attribute);
         attribute.accept(visitor);
         stack.pop();
diff --git a/src/main/java/org/apache/bcel/classfile/ExceptionTable.java b/src/main/java/org/apache/bcel/classfile/ExceptionTable.java
index cd33ee35..ae8cf78d 100644
--- a/src/main/java/org/apache/bcel/classfile/ExceptionTable.java
+++ b/src/main/java/org/apache/bcel/classfile/ExceptionTable.java
@@ -38,7 +38,6 @@ public final class ExceptionTable extends Attribute {
 
     private int[] exceptionIndexTable; // constant pool
 
-
     /**
      * Initialize from another object. Note that both objects use the same
      * references (shallow copy). Use copy() for a physical copy.
@@ -47,7 +46,6 @@ public final class ExceptionTable extends Attribute {
         this(c.getNameIndex(), c.getLength(), c.getExceptionIndexTable(), c.getConstantPool());
     }
 
-
     /**
      * Construct object from input stream.
      * @param nameIndex Index in constant pool
@@ -65,7 +63,6 @@ public final class ExceptionTable extends Attribute {
         }
     }
 
-
     /**
      * @param name_index Index in constant pool
      * @param length Content length in bytes
@@ -78,7 +75,6 @@ public final class ExceptionTable extends Attribute {
         this.exceptionIndexTable = exceptionIndexTable != null ? exceptionIndexTable : ArrayUtils.EMPTY_INT_ARRAY;
     }
 
-
     /**
      * Called by objects that are traversing the nodes of the tree implicitely
      * defined by the contents of a Java class. I.e., the hierarchy of methods,
@@ -91,7 +87,6 @@ public final class ExceptionTable extends Attribute {
         v.visitExceptionTable(this);
     }
 
-
     /**
      * @return deep copy of this attribute
      */
@@ -107,12 +102,11 @@ public final class ExceptionTable extends Attribute {
         return c;
     }
 
-
     /**
      * Dump exceptions attribute to file stream in binary format.
      *
      * @param file Output file stream
-     * @throws IOException
+     * @throws IOException if an I/O error occurs.
      */
     @Override
     public void dump( final DataOutputStream file ) throws IOException {
@@ -123,7 +117,6 @@ public final class ExceptionTable extends Attribute {
         }
     }
 
-
     /**
      * @return Array of indices into constant pool of thrown exceptions.
      */
@@ -131,7 +124,6 @@ public final class ExceptionTable extends Attribute {
         return exceptionIndexTable;
     }
 
-
     /**
      * @return class names of thrown exceptions
      */
@@ -144,7 +136,6 @@ public final class ExceptionTable extends Attribute {
         return names;
     }
 
-
     /**
      * @return Length of exception table.
      */
@@ -152,7 +143,6 @@ public final class ExceptionTable extends Attribute {
         return exceptionIndexTable == null ? 0 : exceptionIndexTable.length;
     }
 
-
     /**
      * @param exceptionIndexTable the list of exception indexes
      * Also redefines number_of_exceptions according to table length.
@@ -161,7 +151,6 @@ public final class ExceptionTable extends Attribute {
         this.exceptionIndexTable = exceptionIndexTable != null ? exceptionIndexTable : ArrayUtils.EMPTY_INT_ARRAY;
     }
 
-
     /**
      * @return String representation, i.e., a list of thrown exceptions.
      */
diff --git a/src/main/java/org/apache/bcel/classfile/FieldOrMethod.java b/src/main/java/org/apache/bcel/classfile/FieldOrMethod.java
index f461b967..f46ff0c8 100644
--- a/src/main/java/org/apache/bcel/classfile/FieldOrMethod.java
+++ b/src/main/java/org/apache/bcel/classfile/FieldOrMethod.java
@@ -73,16 +73,15 @@ public abstract class FieldOrMethod extends AccessFlags implements Cloneable, No
     /**
      * Construct object from file stream.
      * @param file Input stream
-     * @throws IOException
-     * @throws ClassFormatException
+     * @throws IOException if an I/O error occurs.
      */
-    protected FieldOrMethod(final DataInput file, final ConstantPool constant_pool) throws IOException, ClassFormatException {
+    protected FieldOrMethod(final DataInput file, final ConstantPool constantPool) throws IOException {
         this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), null,
-                constant_pool);
+                constantPool);
         final int attributes_count = file.readUnsignedShort();
         attributes = new Attribute[attributes_count];
         for (int i = 0; i < attributes_count; i++) {
-            attributes[i] = Attribute.readAttribute(file, constant_pool);
+            attributes[i] = Attribute.readAttribute(file, constantPool);
         }
         this.attributes_count = attributes_count; // init deprecated field
     }
@@ -91,14 +90,12 @@ public abstract class FieldOrMethod extends AccessFlags implements Cloneable, No
     /**
      * Construct object from file stream.
      * @param file Input stream
-     * @throws IOException
-     * @throws ClassFormatException
+     * @throws IOException if an I/O error occurs.
      * @deprecated (6.0) Use {@link #FieldOrMethod(java.io.DataInput, ConstantPool)} instead.
      */
     @java.lang.Deprecated
-    protected FieldOrMethod(final DataInputStream file, final ConstantPool constant_pool) throws IOException,
-            ClassFormatException {
-        this((DataInput) file, constant_pool);
+    protected FieldOrMethod(final DataInputStream file, final ConstantPool constantPool) throws IOException {
+        this((DataInput) file, constantPool);
     }
 
     /**
@@ -131,17 +128,17 @@ public abstract class FieldOrMethod extends AccessFlags implements Cloneable, No
     /**
      * @return deep copy of this field
      */
-    protected FieldOrMethod copy_( final ConstantPool _constant_pool ) {
+    protected FieldOrMethod copy_(final ConstantPool constantPool) {
         FieldOrMethod c = null;
 
         try {
-          c = (FieldOrMethod)clone();
-        } catch(final CloneNotSupportedException e) {
+            c = (FieldOrMethod) clone();
+        } catch (final CloneNotSupportedException e) {
             // ignored, but will cause NPE ...
         }
 
-        c.constant_pool    = constant_pool;
-        c.attributes       = new Attribute[attributes.length];
+        c.constant_pool = constant_pool;
+        c.attributes = new Attribute[attributes.length];
         c.attributes_count = attributes_count; // init deprecated field
 
         for (int i = 0; i < attributes.length; i++) {
@@ -156,7 +153,7 @@ public abstract class FieldOrMethod extends AccessFlags implements Cloneable, No
      * Dump object to file stream on binary format.
      *
      * @param file Output file stream
-     * @throws IOException
+     * @throws IOException if an I/O error occurs.
      */
     public final void dump(final DataOutputStream file) throws IOException {
         file.writeShort(super.getAccessFlags());
diff --git a/src/main/java/org/apache/bcel/generic/ClassGen.java b/src/main/java/org/apache/bcel/generic/ClassGen.java
index 61b0cd09..1a41f596 100644
--- a/src/main/java/org/apache/bcel/generic/ClassGen.java
+++ b/src/main/java/org/apache/bcel/generic/ClassGen.java
@@ -565,34 +565,24 @@ public class ClassGen extends AccessFlags implements Cloneable {
     /**
      * Look for attributes representing annotations and unpack them.
      */
-    private AnnotationEntryGen[] unpackAnnotations(final Attribute[] attrs)
-    {
+    private AnnotationEntryGen[] unpackAnnotations(final Attribute[] attrs) {
         final List<AnnotationEntryGen> annotationGenObjs = new ArrayList<>();
         for (final Attribute attr : attrs) {
-            if (attr instanceof RuntimeVisibleAnnotations)
-            {
+            if (attr instanceof RuntimeVisibleAnnotations) {
                 final RuntimeVisibleAnnotations rva = (RuntimeVisibleAnnotations) attr;
-                final AnnotationEntry[] annos = rva.getAnnotationEntries();
-                for (final AnnotationEntry a : annos) {
-                    annotationGenObjs.add(new AnnotationEntryGen(a,
-                            getConstantPool(), false));
+                for (final AnnotationEntry a : rva.getAnnotationEntries()) {
+                    annotationGenObjs.add(new AnnotationEntryGen(a, getConstantPool(), false));
                 }
-            }
-            else
-                if (attr instanceof RuntimeInvisibleAnnotations)
-                {
-                    final RuntimeInvisibleAnnotations ria = (RuntimeInvisibleAnnotations) attr;
-                    final AnnotationEntry[] annos = ria.getAnnotationEntries();
-                    for (final AnnotationEntry a : annos) {
-                        annotationGenObjs.add(new AnnotationEntryGen(a,
-                                getConstantPool(), false));
-                    }
+            } else if (attr instanceof RuntimeInvisibleAnnotations) {
+                final RuntimeInvisibleAnnotations ria = (RuntimeInvisibleAnnotations) attr;
+                for (final AnnotationEntry a : ria.getAnnotationEntries()) {
+                    annotationGenObjs.add(new AnnotationEntryGen(a, getConstantPool(), false));
                 }
+            }
         }
         return annotationGenObjs.toArray(AnnotationEntryGen.EMPTY_ARRAY);
     }
 
-
     /** Call notify() method on all observers. This method is not called
      * automatically whenever the state has changed, but has to be
      * called by the user after they have finished editing the object.
diff --git a/src/main/java/org/apache/bcel/generic/FieldGen.java b/src/main/java/org/apache/bcel/generic/FieldGen.java
index 64c0afa6..25acbf9a 100644
--- a/src/main/java/org/apache/bcel/generic/FieldGen.java
+++ b/src/main/java/org/apache/bcel/generic/FieldGen.java
@@ -20,6 +20,7 @@ package org.apache.bcel.generic;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Stream;
 
 import org.apache.bcel.Const;
 import org.apache.bcel.classfile.AnnotationEntry;
@@ -94,10 +95,9 @@ public class FieldGen extends FieldGenOrMethodGen {
             if (attr instanceof ConstantValue) {
                 setValue(((ConstantValue) attr).getConstantValueIndex());
             } else if (attr instanceof Annotations) {
-                final Annotations runtimeAnnotations = (Annotations)attr;
-                final AnnotationEntry[] annotationEntries = runtimeAnnotations.getAnnotationEntries();
-                for (final AnnotationEntry element : annotationEntries) {
-                    addAnnotationEntry(new AnnotationEntryGen(element,cp,false));
+                final Annotations runtimeAnnotations = (Annotations) attr;
+                for (final AnnotationEntry element : runtimeAnnotations.getAnnotationEntries()) {
+                    addAnnotationEntry(new AnnotationEntryGen(element, cp, false));
                 }
             } else {
                 addAttribute(attr);
@@ -125,11 +125,8 @@ public class FieldGen extends FieldGenOrMethodGen {
 
 
     private void addAnnotationsAsAttribute(final ConstantPoolGen cp) {
-          final Attribute[] attrs = AnnotationEntryGen.getAnnotationAttributes(cp, super.getAnnotationEntries());
-        for (final Attribute attr : attrs) {
-            addAttribute(attr);
-        }
-      }
+        Stream.of(AnnotationEntryGen.getAnnotationAttributes(cp, super.getAnnotationEntries())).forEach(this::addAttribute);
+    }
 
 
     private int addConstant() {