code: int computeFieldInfoSize() {
      // The access_flags, name_index, descriptor_index and attributes_count fields use 8 bytes.
      int size = 8;
      // For ease of reference, we use here the same attribute order as in Section 4.7 of the JVMS.
      if (constantValueIndex != 0) {
        // ConstantValue attributes always use 8 bytes.
        symbolTable.addConstantUtf8(Constants.CONSTANT_VALUE);
        size += 8;
      }
      // Before Java 1.5, synthetic fields are represented with a Synthetic attribute.
      if ((accessFlags & Opcodes.ACC_SYNTHETIC) != 0
          && symbolTable.getMajorVersion() < Opcodes.V1_5) {
        // Synthetic attributes always use 6 bytes.
        symbolTable.addConstantUtf8(Constants.SYNTHETIC);
        size += 6;
      }
      if (signatureIndex != 0) {
        // Signature attributes always use 8 bytes.
        symbolTable.addConstantUtf8(Constants.SIGNATURE);
        size += 8;
      }
      // ACC_DEPRECATED is ASM specific, the ClassFile format uses a Deprecated attribute instead.
      if ((accessFlags & Opcodes.ACC_DEPRECATED) != 0) {
        // Deprecated attributes always use 6 bytes.
        symbolTable.addConstantUtf8(Constants.DEPRECATED);
        size += 6;
      }
      if (firstAttribute != null) {
        size += firstAttribute.computeAttributesSize(symbolTable);
      }
      return size;
    }
docs: Returns the size of the field_info JVMS structure generated by this FieldWriter. Also adds the
  names of the attributes of this field in the constant pool.
  
  @return the size in bytes of the field_info JVMS structure.