# Interface Problem

@Incubating public interface Problem
A problem report

Since:
  8.12

- ## Method Summary

  Modifier and Type
  Method
  Description
  `AdditionalData`
  `getAdditionalData()`
  Returns the additional data associated with this problem.
  `ContextualLabel`
  `getContextualLabel()`
  Returns the contextual label.
  `List<Location>`
  `getContextualLocations()`
  Returns additional locations, which can help to understand the problem further.
  `ProblemDefinition`
  `getDefinition()`
  Returns the problem definition.
  `Details`
  `getDetails()`
  Returns the details string.
  `@Nullable Failure`
  `getFailure()`
  Returns the failure associated with this problem.
  `List<Location>`
  `getOriginLocations()`
  Returns the locations where the problem originated.
  `List<Solution>`
  `getSolutions()`
  Returns the list of solutions.

- ## Method Details

  - ### getDefinition

    ProblemDefinition getDefinition()
    Returns the problem definition.
    Returns:
      the definition
    Since:
      8.12

  - ### getContextualLabel

    ContextualLabel getContextualLabel()
    Returns the contextual label.
    Returns:
      the problem label
    Since:
      8.12

  - ### getDetails

    Details getDetails()
    Returns the details string.
    Returns:
      the problem details
    Since:
      8.12

  - ### getOriginLocations

    List<Location> getOriginLocations()
    Returns the locations where the problem originated.
    Returns:
      the locations
    Since:
      8.13

  - ### getContextualLocations

    List<Location> getContextualLocations()
    Returns additional locations, which can help to understand the problem further.

    For example, if a problem was emitted during task execution, the task path will be available in this list.

    Might be empty if there is no meaningful contextual information.

    Returns:
      the locations
    Since:
      8.13

  - ### getSolutions

    List<Solution> getSolutions()
    Returns the list of solutions.
    Returns:
      the solutions
    Since:
      8.12

  - ### getFailure

    @Nullable Failure getFailure()
    Returns the failure associated with this problem.
    Returns:
      the failure
    Since:
      8.12

  - ### getAdditionalData

    AdditionalData getAdditionalData()
    Returns the additional data associated with this problem. There are 2 possible types for additional data:
    - `CustomAdditionalData` - custom additional data attached to a problem by using `ProblemSpec.additionalData(Class, Action)`.
    - `AdditionalData` - additional data attached to the problem.
    to determine the type of additional data `instanceof` can be used.
    Returns:
      the additional data
    Since:
      8.12