# Interface CharacterRangeTableAttribute

All Superinterfaces:
  `Attribute<CharacterRangeTableAttribute>, ClassFileElement`

public sealed interface CharacterRangeTableAttribute extends Attribute<CharacterRangeTableAttribute>
Models the `CharacterRangeTable` attribute, which is a bidirectional mapping from ranges of positions in the source file to ranges of indices into the `code` array. Its entries are delivered as `CharacterRange`s when traversing the elements of a `CodeModel`, toggled by `ClassFile.DebugElementsOption`.

The `CharacterRangeTable` attribute consists of an array of character range entries. The character range entries form a forest data structure: any two range entries are either disjoint, or if they overlap, then one entry must be enclosed within the other, both in `code` array indices and source file character positions. The character range entries may appear in any order.

This attribute only appears on `Code` attributes, permits multiple appearances but should only appear once in a `Code` attribute. It has a data dependency on labels.

This attribute cannot be sent to a `CodeBuilder`; its entries can be constructed with `CharacterRange`, resulting in at most one attribute instance in the built `Code` attribute.

This attribute is not predefined in the Java SE Platform. This is a JDK-specific nonstandard attribute produced by the reference implementation of the system Java compiler, defined by the `jdk.compiler` module.

Since:
  24
See Also:
  - `Attributes.characterRangeTable()`
  - `CompilationIDAttribute`
  - `SourceIDAttribute`

## Method Summary

Modifier and Type
Method
Description
`List<CharacterRangeInfo>`
`characterRangeTable()`
Returns the entries of the character range table.
`static CharacterRangeTableAttribute`
`of(List<CharacterRangeInfo> ranges)`
Returns a `CharacterRangeTable` attribute.

### Methods declared in interface Attribute

`attributeMapper, attributeName`

## Method Details

### characterRangeTable

List<CharacterRangeInfo> characterRangeTable()
Returns the entries of the character range table.

Returns:
  the entries of the character range table

### of

static CharacterRangeTableAttribute of(List<CharacterRangeInfo> ranges)
Returns a `CharacterRangeTable` attribute.

API Note:
  The created attribute cannot be written to a `CodeBuilder`. Use `CodeBuilder::characterRange` instead.
Parameters:
  `ranges` - the descriptions of the character ranges
Returns:
  a `CharacterRangeTable` attribute