# Interface ModuleExportInfo

public sealed interface ModuleExportInfo
Models a single "exports" declaration in the `ModuleAttribute`.

See Java Virtual Machine Specification:
  4.7.25 The `Module` Attribute
Since:
  24
See Also:
  - `ModuleAttribute.exports()`
  - `ModuleDescriptor.Exports`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `PackageEntry`
  `exportedPackage()`
  Returns the exported package.
  `default Set<AccessFlag>`
  `exportsFlags()`
  Returns the flags associated with this export declaration, as a set of flag enums.
  `int`
  `exportsFlagsMask()`
  Returns the flags associated with this export declaration, as a bit mask.
  `List<ModuleEntry>`
  `exportsTo()`
  Returns the list of modules to which this package is exported, or empty if this is an unqualified export.
  `default boolean`
  `has(AccessFlag flag)`
  Returns whether the export declaration has the specified access flag set.
  `static ModuleExportInfo`
  `of(PackageEntry exports, int exportFlags, ModuleEntry... exportsTo)`
  Returns a module export description.
  `static ModuleExportInfo`
  `of(PackageEntry exports, int exportFlags, List<ModuleEntry> exportsTo)`
  Returns a module export description.
  `static ModuleExportInfo`
  `of(PackageEntry exports, Collection<AccessFlag> exportFlags, ModuleEntry... exportsTo)`
  Returns a module export description.
  `static ModuleExportInfo`
  `of(PackageEntry exports, Collection<AccessFlag> exportFlags, List<ModuleEntry> exportsTo)`
  Returns a module export description.
  `static ModuleExportInfo`
  `of(PackageDesc exports, int exportFlags, ModuleDesc... exportsTo)`
  Returns a module export description.
  `static ModuleExportInfo`
  `of(PackageDesc exports, int exportFlags, List<ModuleDesc> exportsTo)`
  Returns a module export description.
  `static ModuleExportInfo`
  `of(PackageDesc exports, Collection<AccessFlag> exportFlags, ModuleDesc... exportsTo)`
  Returns a module export description.
  `static ModuleExportInfo`
  `of(PackageDesc exports, Collection<AccessFlag> exportFlags, List<ModuleDesc> exportsTo)`
  Returns a module export description.

- ## Method Details

  - ### exportedPackage

    PackageEntry exportedPackage()
    Returns the exported package.
    Returns:
      the exported package
    See Also:
      - `ModuleDescriptor.Exports.source()`

  - ### exportsFlagsMask

    int exportsFlagsMask()
    Returns the flags associated with this export declaration, as a bit mask. It is a `u2` value.
    Returns:
      the flags associated with this export declaration, as a bit mask
    See Also:
      - `ModuleDescriptor.Exports.modifiers()`
      - `AccessFlag.Location.MODULE_EXPORTS`

  - ### exportsFlags

    default Set<AccessFlag> exportsFlags()
    Returns the flags associated with this export declaration, as a set of flag enums.
    Returns:
      the flags associated with this export declaration, as a set of flag enums
    Throws:
      `IllegalArgumentException` - if the flags mask has any undefined bit set
    See Also:
      - `ModuleDescriptor.Exports.accessFlags()`
      - `AccessFlag.Location.MODULE_EXPORTS`

  - ### has

    default boolean has(AccessFlag flag)
    Returns whether the export declaration has the specified access flag set.
    Parameters:
      `flag` - the access flag
    Returns:
      whether the export declaration has the specified access flag set
    See Also:
      - `AccessFlag.Location.MODULE_EXPORTS`

  - ### exportsTo

    List<ModuleEntry> exportsTo()
    Returns the list of modules to which this package is exported, or empty if this is an unqualified export.
    Returns:
      the list of modules to which this package is exported, or empty if this is an unqualified export
    See Also:
      - `ModuleDescriptor.Exports.isQualified()`
      - `ModuleDescriptor.Exports.targets()`

  - ### of

    static ModuleExportInfo of(PackageEntry exports, int exportFlags, List<ModuleEntry> exportsTo)
    Returns a module export description.
    Parameters:
      `exports` - the exported package
      `exportFlags` - the export flags, as a bitmask
      `exportsTo` - the modules to which this package is exported, or empty if this is an unqualified export
    Returns:
      a module export description
    Throws:
      `IllegalArgumentException` - if `exportFlags` is not `u2` or if the number of modules exceeds the limit of `u2`

  - ### of

    static ModuleExportInfo of(PackageEntry exports, Collection<AccessFlag> exportFlags, List<ModuleEntry> exportsTo)
    Returns a module export description.
    Parameters:
      `exports` - the exported package
      `exportFlags` - the export flags
      `exportsTo` - the modules to which this package is exported, or empty if this is an unqualified export
    Returns:
      a module export description
    Throws:
      `IllegalArgumentException` - if any flag cannot be applied to the `AccessFlag.Location.MODULE_EXPORTS` location, or if the number of modules exceeds the limit of `u2`

  - ### of

    static ModuleExportInfo of(PackageEntry exports, int exportFlags, ModuleEntry... exportsTo)
    Returns a module export description.
    Parameters:
      `exports` - the exported package
      `exportFlags` - the export flags, as a bitmask
      `exportsTo` - the modules to which this package is exported, or empty if this is an unqualified export
    Returns:
      a module export description
    Throws:
      `IllegalArgumentException` - if `exportFlags` is not `u2` or if the number of modules exceeds the limit of `u2`

  - ### of

    static ModuleExportInfo of(PackageEntry exports, Collection<AccessFlag> exportFlags, ModuleEntry... exportsTo)
    Returns a module export description.
    Parameters:
      `exports` - the exported package
      `exportFlags` - the export flags
      `exportsTo` - the modules to which this package is exported, or empty if this is an unqualified export
    Returns:
      a module export description
    Throws:
      `IllegalArgumentException` - if any flag cannot be applied to the `AccessFlag.Location.MODULE_EXPORTS` location, or if the number of modules exceeds the limit of `u2`

  - ### of

    static ModuleExportInfo of(PackageDesc exports, int exportFlags, List<ModuleDesc> exportsTo)
    Returns a module export description.
    Parameters:
      `exports` - the exported package
      `exportFlags` - the export flags, as a bitmask
      `exportsTo` - the modules to which this package is exported, or empty if this is an unqualified export
    Returns:
      a module export description
    Throws:
      `IllegalArgumentException` - if `exportFlags` is not `u2` or if the number of modules exceeds the limit of `u2`

  - ### of

    static ModuleExportInfo of(PackageDesc exports, Collection<AccessFlag> exportFlags, List<ModuleDesc> exportsTo)
    Returns a module export description.
    Parameters:
      `exports` - the exported package
      `exportFlags` - the export flags
      `exportsTo` - the modules to which this package is exported, or empty if this is an unqualified export
    Returns:
      a module export description
    Throws:
      `IllegalArgumentException` - if any flag cannot be applied to the `AccessFlag.Location.MODULE_EXPORTS` location, or if the number of modules exceeds the limit of `u2`

  - ### of

    static ModuleExportInfo of(PackageDesc exports, int exportFlags, ModuleDesc... exportsTo)
    Returns a module export description.
    Parameters:
      `exports` - the exported package
      `exportFlags` - the export flags, as a bitmask
      `exportsTo` - the modules to which this package is exported, or empty if this is an unqualified export
    Returns:
      a module export description
    Throws:
      `IllegalArgumentException` - if `exportFlags` is not `u2` or if the number of modules exceeds the limit of `u2`

  - ### of

    static ModuleExportInfo of(PackageDesc exports, Collection<AccessFlag> exportFlags, ModuleDesc... exportsTo)
    Returns a module export description.
    Parameters:
      `exports` - the exported package
      `exportFlags` - the export flags
      `exportsTo` - the modules to which this package is exported, or empty if this is an unqualified export
    Returns:
      a module export description
    Throws:
      `IllegalArgumentException` - if any flag cannot be applied to the `AccessFlag.Location.MODULE_EXPORTS` location, or if the number of modules exceeds the limit of `u2`