org_apache_dubbo_validation_filter_ValidationFilterTest_java
net.bytebuddy.jar.asm.ClassReader
private int readField(ClassVisitor classVisitor, Context context, int fieldInfoOffset) {
        String annotationDescriptor;
        int currentAnnotationOffset;
        int numAnnotations;
        char[] charBuffer = context.charBuffer;
        int currentOffset = fieldInfoOffset;
        int accessFlags = this.readUnsignedShort(currentOffset);
        String name = this.readUTF8(currentOffset + 2, charBuffer);
        String descriptor = this.readUTF8(currentOffset + 4, charBuffer);
        currentOffset += 6;
        Object constantValue = null;
        String signature = null;
        int runtimeVisibleAnnotationsOffset = 0;
        int runtimeInvisibleAnnotationsOffset = 0;
        int runtimeVisibleTypeAnnotationsOffset = 0;
        int runtimeInvisibleTypeAnnotationsOffset = 0;
        Attribute attributes = null;
        int attributesCount = this.readUnsignedShort(currentOffset);
        currentOffset += 2;
        while (attributesCount-- > 0) {
            String attributeName = this.readUTF8(currentOffset, charBuffer);
            int attributeLength = this.readInt(currentOffset + 2);
            currentOffset += 6;
            if ("ConstantValue".equals(attributeName)) {
                int constantvalueIndex = this.readUnsignedShort(currentOffset);
                constantValue = constantvalueIndex == 0 ? null : this.readConst(constantvalueIndex, charBuffer);
            } else if ("Signature".equals(attributeName)) {
                signature = this.readUTF8(currentOffset, charBuffer);
            } else if ("Deprecated".equals(attributeName)) {
                accessFlags |= 0x20000;
            } else if ("Synthetic".equals(attributeName)) {
                accessFlags |= 0x1000;
            } else if ("RuntimeVisibleAnnotations".equals(attributeName)) {
                runtimeVisibleAnnotationsOffset = currentOffset;
            } else if ("RuntimeVisibleTypeAnnotations".equals(attributeName)) {
                runtimeVisibleTypeAnnotationsOffset = currentOffset;
            } else if ("RuntimeInvisibleAnnotations".equals(attributeName)) {
                runtimeInvisibleAnnotationsOffset = currentOffset;
            } else if ("RuntimeInvisibleTypeAnnotations".equals(attributeName)) {
                runtimeInvisibleTypeAnnotationsOffset = currentOffset;
            } else {
                Attribute attribute = this.readAttribute(context.attributePrototypes, attributeName, currentOffset, attributeLength, charBuffer, -1, null);
                attribute.nextAttribute = attributes;
                attributes = attribute;
            }
            currentOffset += attributeLength;
        }
        FieldVisitor fieldVisitor = classVisitor.visitField(accessFlags, name, descriptor, signature, constantValue);
        if (fieldVisitor == null) {
            return currentOffset;
        }
        if (runtimeVisibleAnnotationsOffset != 0) {
            numAnnotations = this.readUnsignedShort(runtimeVisibleAnnotationsOffset);
            currentAnnotationOffset = runtimeVisibleAnnotationsOffset + 2;
            while (numAnnotations-- > 0) {
                annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer);
                currentAnnotationOffset += 2;
                currentAnnotationOffset = this.readElementValues(fieldVisitor.visitAnnotation(annotationDescriptor, true), currentAnnotationOffset, true, charBuffer);
            }
        }
        if (runtimeInvisibleAnnotationsOffset != 0) {
            numAnnotations = this.readUnsignedShort(runtimeInvisibleAnnotationsOffset);
            currentAnnotationOffset = runtimeInvisibleAnnotationsOffset + 2;
            while (numAnnotations-- > 0) {
                annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer);
                currentAnnotationOffset += 2;
                currentAnnotationOffset = this.readElementValues(fieldVisitor.visitAnnotation(annotationDescriptor, false), currentAnnotationOffset, true, charBuffer);
            }
        }
        if (runtimeVisibleTypeAnnotationsOffset != 0) {
            numAnnotations = this.readUnsignedShort(runtimeVisibleTypeAnnotationsOffset);
            currentAnnotationOffset = runtimeVisibleTypeAnnotationsOffset + 2;
            while (numAnnotations-- > 0) {
                currentAnnotationOffset = this.readTypeAnnotationTarget(context, currentAnnotationOffset);
                annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer);
                currentAnnotationOffset += 2;
                currentAnnotationOffset = this.readElementValues(fieldVisitor.visitTypeAnnotation(context.currentTypeAnnotationTarget, context.currentTypeAnnotationTargetPath, annotationDescriptor, true), currentAnnotationOffset, true, charBuffer);
            }
        }
        if (runtimeInvisibleTypeAnnotationsOffset != 0) {
            numAnnotations = this.readUnsignedShort(runtimeInvisibleTypeAnnotationsOffset);
            currentAnnotationOffset = runtimeInvisibleTypeAnnotationsOffset + 2;
            while (numAnnotations-- > 0) {
                currentAnnotationOffset = this.readTypeAnnotationTarget(context, currentAnnotationOffset);
                annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer);
                currentAnnotationOffset += 2;
                currentAnnotationOffset = this.readElementValues(fieldVisitor.visitTypeAnnotation(context.currentTypeAnnotationTarget, context.currentTypeAnnotationTargetPath, annotationDescriptor, false), currentAnnotationOffset, true, charBuffer);
            }
        }
        while (attributes != null) {
            Attribute nextAttribute = attributes.nextAttribute;
            attributes.nextAttribute = null;
            fieldVisitor.visitAttribute(attributes);
            attributes = nextAttribute;
        }
        fieldVisitor.visitEnd();
        return currentOffset;
    }
 -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.Long.valueOf(long): java.lang.Long -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.LinkedHashMap.remove(java.lang.Object): java.lang.Object -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.lang.String.hashCode(): int -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.hashCode(): int -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.Long.longValue(): long
 [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] -> java.lang.Long.valueOf(long): java.lang.Long [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.LinkedHashMap.remove(java.lang.Object): java.lang.Object [CALL] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [CALL] -> java.lang.String.hashCode(): int [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] -> java.lang.Long.longValue(): long [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT]