# Annotation Type HintValue

@Retention(CLASS) @Target(FIELD) public @interface HintValue

What an enum constant is called on the wire.

The builders compare against a literal, and the constant name is not it: `IOS7` happens to lowercase to `ios7`, but `INTERNAL_ONLY` does not lowercase to `internalOnly`, and `java.version` accepts `8`, `11`, `17` and `21`, none of which can be a constant name at all. A builder handed a value it does not recognize falls back to its default, so a name-based conversion fails silently -- which is the failure this whole package removes.

- ## Required Element Summary

  Required Elements
  Modifier and Type
  Required Element
  Description
  `String`
  `value`
  The literal the builder compares against.

- ## Optional Element Summary

  Optional Elements
  Modifier and Type
  Optional Element
  Description
  `String[]`
  `accepts`
  Other spellings the builder accepts for this same behaviour.
  `String`
  `label`
  How the Settings editor labels this choice, when the wire value is not presentable on its own.

- ## Element Details

  - ### value

    String value
    The literal the builder compares against.

  - ### accepts

    String[] accepts

    Other spellings the builder accepts for this same behaviour.

    `flat` and `ios7` are one theme, and a properties file may say either. They are not separate constants -- one behaviour, one constant, or the annotation asks a question with no right answer -- so the alternatives live here, and `cn1:migrate-build-hints` uses them to turn whichever spelling a project wrote into the constant it means.

    Default:
      `{}`

  - ### label

    String label
    How the Settings editor labels this choice, when the wire value is not presentable on its own.
    Default:
      `""`