# Interface ReturnInstruction

All Superinterfaces:
  `ClassFileElement, CodeElement, Instruction`

public sealed interface ReturnInstruction extends Instruction
Models a return-from-method instruction in the `code` array of a `Code` attribute. Corresponding opcodes have a kind of `Opcode.Kind.RETURN`. Delivered as a `CodeElement` when traversing the elements of a `CodeModel`.

A return-from-method instruction is composite:

    ReturnInstruction(TypeKind typeKind)

where `typeKind` is computational or `void`.

Since:
  24
See Also:
  - `Opcode.Kind.RETURN`
  - `CodeBuilder::return_`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ReturnInstruction`
  `of(Opcode op)`
  Returns a return instruction.
  `static ReturnInstruction`
  `of(TypeKind typeKind)`
  Returns a return instruction.
  `TypeKind`
  `typeKind()`
  Returns the computational type, including `void`, of the return instruction.

  ### Methods declared in interface Instruction

  `opcode, sizeInBytes`

- ## Method Details

  - ### typeKind

    TypeKind typeKind()
    Returns the computational type, including `void`, of the return instruction.
    Returns:
      the computational type, including `void`, of the return instruction

  - ### of

    static ReturnInstruction of(TypeKind typeKind)
    Returns a return instruction. `typeKind` is converted to its computational type.
    Parameters:
      `typeKind` - the type of the return instruction
    Returns:
      a return instruction

  - ### of

    static ReturnInstruction of(Opcode op)
    Returns a return instruction.
    Parameters:
      `op` - the opcode for the specific type of return instruction, which must be of kind `Opcode.Kind.RETURN`
    Returns:
      a return instruction
    Throws:
      `IllegalArgumentException` - if the opcode kind is not `Opcode.Kind.RETURN`.