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

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

- - ### Uses of BiLeftHandSide in org.optaplanner.core.impl.score.stream.drools.bi

    Methods in org.optaplanner.core.impl.score.stream.drools.bi that return BiLeftHandSide
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract BiLeftHandSide<A,​B>` | DroolsAbstractBiConstraintStream.`getLeftHandSide()` |
    `BiLeftHandSide<A,​B>` | DroolsExistsBiConstraintStream.`getLeftHandSide()` |
    `BiLeftHandSide<A,​B>` | DroolsFilterBiConstraintStream.`getLeftHandSide()` |
    `BiLeftHandSide<NewA,​NewB>` | DroolsGroupingBiConstraintStream.`getLeftHandSide()` |
    `BiLeftHandSide<A,​B>` | DroolsJoinBiConstraintStream.`getLeftHandSide()` |

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

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

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