==== 6.13.1 class_descriptor_info ==== The **class_descriptor_info** structure is used to describe a class or interface defined in this package: The items of the **class_descriptor_info** structure are as follows: **token** The **token** item represents the class **token** ([[4.3.7.2_Classes and Interfaces| Section 4.3.7.2, Classes and Interfaces]]) of this class or interface. If this class or interface is package-visible it does not have a **token** assigned. In this case the value of the **token** item must be **0xFF**. **access_flags** The ****access_flags**** item is a mask of modifiers used to describe the access permission to and properties of this class or interface. The ****access_flags**** modifiers for classes and interfaces are shown in the following table. Name Value ACC_PUBLIC 0x01 ACC_FINAL 0x10 ACC_INTERFACE 0x40 ACC_ABSTRACT 0x80 The class access and modifier flags defined in the table above are a subset of those defined for classes and interfaces in a Java class file. They have the same meaning, and are set under the same conditions, as the corresponding flags in a Java class file. All other flag values are reserved. Their values must be zero. **this_class_ref** The **this_**class_ref**** item is a **class_ref** structure indicating the location of the **class_info** structure in the Class Component ([[6.8_Class Component| Section 6.8, Class Component]]). The **class_ref** structure is defined as part of the **CONSTANT_Classref_info** structure ([[6.7.1_CONSTANT_Classref| Section 6.7.1, CONSTANT_Classref]]). **interface_count** The ****interface_count**** item represents the number of entries in the interfaces array. For an interface, ****interface_count**** is always set to zero. **field_count** The ****field_count**** item represents the number of entries in the fields array. If this **class_descriptor_info** structure represents an interface, the value of the ****field_count**** item is equal to zero. Static final fields of primitive types are not represented as fields in a CAP file, but instead these compile-time constants are placed inline in bytecode sequences. The **field_count** item does not include static final field of primitive types defined by this class. **method_count** The **method_count** item represents the number of entries in the **methods** array. **interfaces[]** The **interfaces** item represents an array of **interfaces** implemented by this class. The elements in the array are **class_ref** structures indicating the location of the **interface_info** structure in the Class Component ([[6.8_Class Component| Section 6.8, Class Component]]). The **class_ref** structure is defined as part of the **CONSTANT_Classref_info** structure ([[6.7.1_CONSTANT_Classref| Section 6.7.1, CONSTANT_Classref]]). **fields[]** The **fields** item represents an array of **field_descriptor_info** structures. Each field declared by this class is represented in the array, except static final **fields** of primitive types. Inherited **fields** are not included in the array. **methods[]** The **methods** item represents an array of **method_descriptor_info** structures. Each method declared or defined by this class or interface is represented in the array. For a class, inherited **methods** are not included in the array. For an interface, inherited **methods** are included in the array.