# Annotation Interface UML

@Documented @Retention(RUNTIME) @Target({TYPE,FIELD,METHOD}) public @interface UML
An annotation mapping each interface, methods or fields to the UML identifier where they come from.

Since:
  2.0

- ## Required Element Summary

  Required Elements
  Modifier and Type
  Required Element
  Description
  `String`
  `identifier`
  The UML identifier for the annotated interface, method or code list element.
  `Specification`
  `specification`
  The specification where this UML come from.

- ## Optional Element Summary

  Optional Elements
  Modifier and Type
  Optional Element
  Description
  `Obligation`
  `obligation`
  The obligation declared in the UML.

- ## Element Details

  - ### identifier

    String identifier
    The UML identifier for the annotated interface, method or code list element. Scripts can use this identifier in order to maps a GeoAPI method to the UML entity where it come from.
    Returns:
      The UML identifier used in the standard.

  - ### obligation

    Obligation obligation
    The obligation declared in the UML. This metadata can be queried in order to determine if a null value is allowed for the annotated method or not. If the obligation is `Obligation.MANDATORY`, then null value are not allowed.
    Returns:
      The obligation declared in the standard.
    Default:
      `MANDATORY`

  - ### specification

    Specification specification
    The specification where this UML come from.
    Returns:
      The originating specification.