## Uses of Class
org.optaplanner.core.impl.score.stream.drools.common.TriLeftHandSide

- Packages that use TriLeftHandSide
  Package | Description
  --- | ---
  org.optaplanner.core.impl.score.stream.drools.common |
  org.optaplanner.core.impl.score.stream.drools.tri |

- - ### Uses of TriLeftHandSide in org.optaplanner.core.impl.score.stream.drools.common

    Methods in org.optaplanner.core.impl.score.stream.drools.common that return TriLeftHandSide
    Modifier and Type | Method | Description
    --- | --- | ---
    `<D> TriLeftHandSide<A,​B,​C>` | TriLeftHandSide.`andExists​(Class<D> dClass, QuadJoiner<A,​B,​C,​D>[] joiners)` |
    `TriLeftHandSide<A,​B,​C>` | TriLeftHandSide.`andFilter​(TriPredicate<A,​B,​C> predicate)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | BiLeftHandSide.`andGroupBy​(BiFunction<A,​B,​NewA> keyMappingA, BiFunction<A,​B,​NewB> keyMappingB, BiFunction<A,​B,​NewC> keyMappingC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | BiLeftHandSide.`andGroupBy​(BiFunction<A,​B,​NewA> keyMappingA, BiFunction<A,​B,​NewB> keyMappingB, BiConstraintCollector<A,​B,​?,​NewC> collectorC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | BiLeftHandSide.`andGroupBy​(BiFunction<A,​B,​NewA> keyMappingA, BiConstraintCollector<A,​B,​?,​NewB> collectorB, BiConstraintCollector<A,​B,​?,​NewC> collectorC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | BiLeftHandSide.`andGroupBy​(BiConstraintCollector<A,​B,​?,​NewA> collectorA, BiConstraintCollector<A,​B,​?,​NewB> collectorB, BiConstraintCollector<A,​B,​?,​NewC> collectorC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | QuadLeftHandSide.`andGroupBy​(QuadFunction<A,​B,​C,​D,​NewA> keyMappingA, QuadFunction<A,​B,​C,​D,​NewB> keyMappingB, QuadFunction<A,​B,​C,​D,​NewC> keyMappingC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | QuadLeftHandSide.`andGroupBy​(QuadFunction<A,​B,​C,​D,​NewA> keyMappingA, QuadFunction<A,​B,​C,​D,​NewB> keyMappingB, QuadConstraintCollector<A,​B,​C,​D,​?,​NewC> collectorC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | QuadLeftHandSide.`andGroupBy​(QuadFunction<A,​B,​C,​D,​NewA> keyMappingA, QuadConstraintCollector<A,​B,​C,​D,​?,​NewB> collectorB, QuadConstraintCollector<A,​B,​C,​D,​?,​NewC> collectorC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | QuadLeftHandSide.`andGroupBy​(QuadConstraintCollector<A,​B,​C,​D,​?,​NewA> collectorA, QuadConstraintCollector<A,​B,​C,​D,​?,​NewB> collectorB, QuadConstraintCollector<A,​B,​C,​D,​?,​NewC> collectorC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | TriLeftHandSide.`andGroupBy​(TriFunction<A,​B,​C,​NewA> keyMappingA, TriFunction<A,​B,​C,​NewB> keyMappingB, TriFunction<A,​B,​C,​NewC> keyMappingC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | TriLeftHandSide.`andGroupBy​(TriFunction<A,​B,​C,​NewA> keyMappingA, TriFunction<A,​B,​C,​NewB> keyMappingB, TriConstraintCollector<A,​B,​C,​?,​NewC> collectorC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | TriLeftHandSide.`andGroupBy​(TriFunction<A,​B,​C,​NewA> keyMappingA, TriConstraintCollector<A,​B,​C,​?,​NewB> collectorB, TriConstraintCollector<A,​B,​C,​?,​NewC> collectorC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | TriLeftHandSide.`andGroupBy​(TriConstraintCollector<A,​B,​C,​?,​NewA> collectorA, TriConstraintCollector<A,​B,​C,​?,​NewB> collectorB, TriConstraintCollector<A,​B,​C,​?,​NewC> collectorC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | UniLeftHandSide.`andGroupBy​(Function<A,​NewA> keyMappingA, Function<A,​NewB> keyMappingB, Function<A,​NewC> keyMappingC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | UniLeftHandSide.`andGroupBy​(Function<A,​NewA> keyMappingA, Function<A,​NewB> keyMappingB, UniConstraintCollector<A,​?,​NewC> collectorC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | UniLeftHandSide.`andGroupBy​(Function<A,​NewA> keyMappingA, UniConstraintCollector<A,​?,​NewB> collectorB, UniConstraintCollector<A,​?,​NewC> collectorC)` |
    `<NewA,​NewB,​NewC> TriLeftHandSide<NewA,​NewB,​NewC>` | UniLeftHandSide.`andGroupBy​(UniConstraintCollector<A,​?,​NewA> collectorA, UniConstraintCollector<A,​?,​NewB> collectorB, UniConstraintCollector<A,​?,​NewC> collectorC)` |
    `<C> TriLeftHandSide<A,​B,​C>` | BiLeftHandSide.`andJoin​(UniLeftHandSide<C> right, TriJoiner<A,​B,​C> joiner)` |
    `<D> TriLeftHandSide<A,​B,​C>` | TriLeftHandSide.`andNotExists​(Class<D> dClass, QuadJoiner<A,​B,​C,​D>[] joiners)` |

    Constructors in org.optaplanner.core.impl.score.stream.drools.common with parameters of type TriLeftHandSide
    Constructor | Description
    --- | ---
    `TriLeftHandSide​(TriLeftHandSide<A,​B,​C> leftHandSide, PatternVariable<C,​?,​?> patternVariable)` |

  - ### Uses of TriLeftHandSide in org.optaplanner.core.impl.score.stream.drools.tri

    Methods in org.optaplanner.core.impl.score.stream.drools.tri that return TriLeftHandSide
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract TriLeftHandSide<A,​B,​C>` | DroolsAbstractTriConstraintStream.`getLeftHandSide()` |
    `TriLeftHandSide<A,​B,​C>` | DroolsExistsTriConstraintStream.`getLeftHandSide()` |
    `TriLeftHandSide<A,​B,​C>` | DroolsFilterTriConstraintStream.`getLeftHandSide()` |
    `TriLeftHandSide<NewA,​NewB,​NewC>` | DroolsGroupingTriConstraintStream.`getLeftHandSide()` |
    `TriLeftHandSide<A,​B,​C>` | DroolsJoinTriConstraintStream.`getLeftHandSide()` |