Package org.optaplanner.core.api.domain.variable

## Annotation Type InverseRelationShadowVariable

-     @Target({METHOD,FIELD})
      @Retention(RUNTIME)
      public @interface InverseRelationShadowVariable

  Specifies that a bean property (or a field) is the inverse of a `PlanningVariable`, which implies it's a shadow variable.

  It is specified on a getter of a java bean property (or a field) of a `PlanningEntity` class.

- - ### Required Element Summary

    Required Elements
    Modifier and Type | Required Element | Description
    --- | --- | ---
    `String` | `sourceVariableName` | In a bidirectional relationship, the shadow side (= the follower side) uses this property (and nothing else) to declare for which `PlanningVariable` it is a shadow.

- - ### Element Detail

    - #### sourceVariableName

          String sourceVariableName

      In a bidirectional relationship, the shadow side (= the follower side) uses this property (and nothing else) to declare for which `PlanningVariable` it is a shadow.

      Both sides of a bidirectional relationship should be consistent: if A points to B, then B must point to A.

      When the `Solver` changes a genuine variable, it adjusts the shadow variable accordingly. In practice, the `Solver` ignores shadow variables (except for consistency housekeeping).

      Returns:
        the variable property name on the opposite end of this bidirectional relationship