jodd-proxetta/src/main/java/jodd/asm7/Attribute.java
protected Attribute read(
      final ClassReader classReader,
      final int offset,
      final int length,
      final char[] charBuffer,
      final int codeAttributeOffset,
      final Label[] labels) {
    Attribute attribute = new Attribute(type);
    attribute.content = new byte[length];
    System.arraycopy(classReader.b, offset, attribute.content, 0, length);
    return attribute;
  }
protected Attribute read(
      final ClassReader classReader,
      final int offset,
      final int length,
      final char[] charBuffer,
      final int codeAttributeOffset,
      final Label[] labels) {
    Attribute attribute = new Attribute(type);
    attribute.content = new byte[length];
    System.arraycopy(classReader.b, offset, attribute.content, 0, length);
    return attribute;
  }
Reads a {@link #type} attribute. This method must return a <i>new</i> {@link Attribute} object,
of type {@link #type}, corresponding to the 'length' bytes starting at 'offset', in the given
ClassReader.

@param classReader the class that contains the attribute to be read.
@param offset index of the first byte of the attribute's content in {@link ClassReader#b}. The
6 attribute header bytes (attribute_name_index and attribute_length) are not taken into
account here.
@param length the length of the attribute's content (excluding the 6 attribute header bytes).
@param charBuffer the buffer to be used to call the ClassReader methods requiring a
'charBuffer' parameter.
@param codeAttributeOffset index of the first byte of content of the enclosing Code attribute
in {@link ClassReader#b}, or -1 if the attribute to be read is not a code attribute. The 6
attribute header bytes (attribute_name_index and attribute_length) are not taken into
account here.
@param labels the labels of the method's code, or {@literal null} if the attribute to be read
is not a code attribute.
@return a <i>new</i> {@link Attribute} object corresponding to the specified bytes.