jodd-proxetta/src/main/java/jodd/asm7/AnnotationWriter.java
static int computeParameterAnnotationsSize(
      final String attributeName,
      final AnnotationWriter[] annotationWriters,
      final int annotableParameterCount) {
    // Note: attributeName is added to the constant pool by the call to computeAnnotationsSize
    // below. This assumes that there is at least one non-null element in the annotationWriters
    // sub-array (which is ensured by the lazy instantiation of this array in MethodWriter).
    // The attribute_name_index, attribute_length and num_parameters fields use 7 bytes, and each
    // element of the parameter_annotations array uses 2 bytes for its num_annotations field.
    int attributeSize = 7 + 2 * annotableParameterCount;
    for (int i = 0; i < annotableParameterCount; ++i) {
      AnnotationWriter annotationWriter = annotationWriters[i];
      attributeSize +=
          annotationWriter == null ? 0 : annotationWriter.computeAnnotationsSize(attributeName) - 8;
    }
    return attributeSize;
  }
static int computeParameterAnnotationsSize(
      final String attributeName,
      final AnnotationWriter[] annotationWriters,
      final int annotableParameterCount) {
    // Note: attributeName is added to the constant pool by the call to computeAnnotationsSize
    // below. This assumes that there is at least one non-null element in the annotationWriters
    // sub-array (which is ensured by the lazy instantiation of this array in MethodWriter).
    // The attribute_name_index, attribute_length and num_parameters fields use 7 bytes, and each
    // element of the parameter_annotations array uses 2 bytes for its num_annotations field.
    int attributeSize = 7 + 2 * annotableParameterCount;
    for (int i = 0; i < annotableParameterCount; ++i) {
      AnnotationWriter annotationWriter = annotationWriters[i];
      attributeSize +=
          annotationWriter == null ? 0 : annotationWriter.computeAnnotationsSize(attributeName) - 8;
    }
    return attributeSize;
  }
static int computeParameterAnnotationsSize ( final String attributeName , final AnnotationWriter [ ] annotationWriters , final int annotableParameterCount ) { // Note: attributeName is added to the constant pool by the call to computeAnnotationsSize // below. This assumes that there is at least one non-null element in the annotationWriters // sub-array (which is ensured by the lazy instantiation of this array in MethodWriter). // The attribute_name_index, attribute_length and num_parameters fields use 7 bytes, and each // element of the parameter_annotations array uses 2 bytes for its num_annotations field. int attributeSize = 7 + 2 * annotableParameterCount ; for ( int i = 0 ; i < annotableParameterCount ; ++ i ) { AnnotationWriter annotationWriter = annotationWriters [ i ] ; attributeSize += annotationWriter == null ? 0 : annotationWriter . computeAnnotationsSize ( attributeName ) - 8 ; } return attributeSize ; }
Returns the size of a Runtime[In]VisibleParameterAnnotations attribute containing all the
annotation lists from the given AnnotationWriter sub-array. Also adds the attribute name to the
constant pool of the class.

@param attributeName one of "Runtime[In]VisibleParameterAnnotations".
@param annotationWriters an array of AnnotationWriter lists (designated by their <i>last</i>
element).
@param annotableParameterCount the number of elements in annotationWriters to take into account
(elements [0..annotableParameterCount[ are taken into account).
@return the size in bytes of a Runtime[In]VisibleParameterAnnotations attribute corresponding
to the given sub-array of AnnotationWriter lists. This includes the size of the
attribute_name_index and attribute_length fields.
Returns the size of a Runtime [ In ] VisibleParameterAnnotations attribute containing all the annotation lists from the given AnnotationWriter sub - array . Also adds the attribute name to the constant pool of the class .