# Interface LineNumberTableAttribute

All Superinterfaces:
  `Attribute<LineNumberTableAttribute>, ClassFileElement`

public sealed interface LineNumberTableAttribute extends Attribute<LineNumberTableAttribute>
Models the `LineNumberTable` attribute (JVMS 4.7.12), which records the mapping between indexes into the `code` array and line numbers in the source file. Its entries are delivered as `LineNumber` when traversing the elements of a `CodeModel`, which is toggled by `ClassFile.LineNumbersOption`.

This attribute only appears on `Code` attributes, and permits multiple instances 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 `LineNumber`, resulting in at most one attribute instance in the built `Code` attribute.

The attribute was introduced in the Java Platform version 1.0.2, major version 45.

See Java Virtual Machine Specification:
  4.7.12 The `LineNumberTable` Attribute
Since:
  24
See Also:
  - `Attributes.lineNumberTable()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<LineNumberInfo>`
  `lineNumbers()`
  Returns the table mapping bytecode offsets to source line numbers.
  `static LineNumberTableAttribute`
  `of(List<LineNumberInfo> lines)`
  Returns a `LineNumberTable` attribute.

  ### Methods declared in interface Attribute

  `attributeMapper, attributeName`
  Modifier and Type
  Method
  Description
  `AttributeMapper<LineNumberTableAttribute>`
  `attributeMapper()`
  Returns the `AttributeMapper` associated with this attribute.
  `Utf8Entry`
  `attributeName()`
  Returns the name of the attribute.

- ## Method Details

  - ### lineNumbers

    List<LineNumberInfo> lineNumbers()
    Returns the table mapping bytecode offsets to source line numbers.
    Returns:
      the table mapping bytecode offsets to source line numbers

  - ### of

    static LineNumberTableAttribute of(List<LineNumberInfo> lines)
    Returns a `LineNumberTable` attribute.
    API Note:
      The created attribute cannot be written to a `CodeBuilder`. Call `CodeBuilder::lineNumber` in the correct order instead.
    Parameters:
      `lines` - the line number descriptions
    Returns:
      a `LineNumberTable` attribute
    Throws:
      `IllegalArgumentException` - if the number of descriptions exceeds the limit of `u2`