## Uses of Interface
org.optaplanner.core.api.function.QuadFunction

- Packages that use QuadFunction
  Package | Description
  --- | ---
  org.optaplanner.core.api.score.stream |
  org.optaplanner.core.api.score.stream.quad | The `ConstraintStream` API for four matched facts.
  org.optaplanner.core.api.score.stream.tri | The `ConstraintStream` API for tri-tuples.
  org.optaplanner.core.impl.score.stream.drools |
  org.optaplanner.core.impl.score.stream.drools.bi |
  org.optaplanner.core.impl.score.stream.drools.common |
  org.optaplanner.core.impl.score.stream.drools.quad |
  org.optaplanner.core.impl.score.stream.drools.tri |
  org.optaplanner.core.impl.score.stream.drools.uni |
  org.optaplanner.core.impl.score.stream.penta |
  org.optaplanner.core.impl.score.stream.quad |
  org.optaplanner.core.impl.score.stream.tri |

- - ### Uses of QuadFunction in org.optaplanner.core.api.score.stream

    Methods in org.optaplanner.core.api.score.stream with parameters of type QuadFunction
    Modifier and Type | Method | Description
    --- | --- | ---
    `static <A,​B,​C,​D> QuadConstraintCollector<A,​B,​C,​D,​?,​Integer>` | ConstraintCollectors.`countDistinct​(QuadFunction<A,​B,​C,​D,​?> groupValueMapping)` | As defined by `ConstraintCollectors.countDistinct(Function)`.
    `static <A,​B,​C,​D> QuadConstraintCollector<A,​B,​C,​D,​?,​Long>` | ConstraintCollectors.`countDistinctLong​(QuadFunction<A,​B,​C,​D,​?> groupValueMapping)` | As defined by `ConstraintCollectors.countDistinct(Function)`.
    `static <A,​B,​C,​D,​E,​Property_> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`equal​(QuadFunction<A,​B,​C,​D,​Property_> leftMapping, Function<E,​Property_> rightMapping)` | As defined by `Joiners.equal(Function, Function)`
    `static <A,​B,​C,​D,​E,​Property_ extends Comparable<Property_>> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`greaterThan​(QuadFunction<A,​B,​C,​D,​Property_> leftMapping, Function<E,​Property_> rightMapping)` | As defined by `Joiners.greaterThan(Function, Function)`
    `static <A,​B,​C,​D,​E,​Property_ extends Comparable<Property_>> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`greaterThanOrEqual​(QuadFunction<A,​B,​C,​D,​Property_> leftMapping, Function<E,​Property_> rightMapping)` | As defined by `Joiners.greaterThanOrEqual(Function, Function)`
    `static <A,​B,​C,​D,​E,​Property_ extends Comparable<Property_>> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`lessThan​(QuadFunction<A,​B,​C,​D,​Property_> leftMapping, Function<E,​Property_> rightMapping)` | As defined by `Joiners.lessThan(Function, Function)`
    `static <A,​B,​C,​D,​E,​Property_ extends Comparable<Property_>> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`lessThanOrEqual​(QuadFunction<A,​B,​C,​D,​Property_> leftMapping, Function<E,​Property_> rightMapping)` | As defined by `Joiners.lessThanOrEqual(Function, Function)`
    `static <A,​B,​C,​D,​Mapped extends Comparable<Mapped>> QuadConstraintCollector<A,​B,​C,​D,​?,​Mapped>` | ConstraintCollectors.`max​(QuadFunction<A,​B,​C,​D,​Mapped> groupValueMapping)` | As defined by `ConstraintCollectors.max(Function)`.
    `static <A,​B,​C,​D,​Mapped> QuadConstraintCollector<A,​B,​C,​D,​?,​Mapped>` | ConstraintCollectors.`max​(QuadFunction<A,​B,​C,​D,​Mapped> groupValueMapping, Comparator<Mapped> comparator)` | As defined by `ConstraintCollectors.max(Function)`, only with a custom `Comparator`.
    `static <A,​B,​C,​D,​Mapped extends Comparable<Mapped>> QuadConstraintCollector<A,​B,​C,​D,​?,​Mapped>` | ConstraintCollectors.`min​(QuadFunction<A,​B,​C,​D,​Mapped> groupValueMapping)` | As defined by `ConstraintCollectors.min(Function)`.
    `static <A,​B,​C,​D,​Mapped> QuadConstraintCollector<A,​B,​C,​D,​?,​Mapped>` | ConstraintCollectors.`min​(QuadFunction<A,​B,​C,​D,​Mapped> groupValueMapping, Comparator<Mapped> comparator)` | As defined by `ConstraintCollectors.min(Function)`, only with a custom `Comparator`.
    `static <A,​B,​C,​D,​E,​Property_ extends Comparable<Property_>> PentaJoiner<A,​B,​C,​D,​E>` | Joiners.`overlapping​(QuadFunction<A,​B,​C,​D,​Property_> leftStartMapping, QuadFunction<A,​B,​C,​D,​Property_> leftEndMapping, Function<E,​Property_> rightStartMapping, Function<E,​Property_> rightEndMapping)` | As defined by `Joiners.overlapping(Function, Function)`.
    `static <A,​B,​C,​D,​Result> QuadConstraintCollector<A,​B,​C,​D,​?,​Result>` | ConstraintCollectors.`sum​(QuadFunction<? super A,​? super B,​? super C,​? super D,​Result> groupValueMapping, Result zero, BinaryOperator<Result> adder, BinaryOperator<Result> subtractor)` | As defined by `ConstraintCollectors.sum(ToIntFunction)`.
    `static <A,​B,​C,​D> QuadConstraintCollector<A,​B,​C,​D,​?,​BigDecimal>` | ConstraintCollectors.`sumBigDecimal​(QuadFunction<? super A,​? super B,​? super C,​? super D,​BigDecimal> groupValueMapping)` | As defined by `ConstraintCollectors.sum(ToIntFunction)`.
    `static <A,​B,​C,​D> QuadConstraintCollector<A,​B,​C,​D,​?,​BigInteger>` | ConstraintCollectors.`sumBigInteger​(QuadFunction<? super A,​? super B,​? super C,​? super D,​BigInteger> groupValueMapping)` | As defined by `ConstraintCollectors.sum(ToIntFunction)`.
    `static <A,​B,​C,​D> QuadConstraintCollector<A,​B,​C,​D,​?,​Duration>` | ConstraintCollectors.`sumDuration​(QuadFunction<? super A,​? super B,​? super C,​? super D,​Duration> groupValueMapping)` | As defined by `ConstraintCollectors.sum(ToIntFunction)`.
    `static <A,​B,​C,​D> QuadConstraintCollector<A,​B,​C,​D,​?,​Period>` | ConstraintCollectors.`sumPeriod​(QuadFunction<? super A,​? super B,​? super C,​? super D,​Period> groupValueMapping)` | As defined by `ConstraintCollectors.sum(ToIntFunction)`.
    `static <A,​B,​C,​D,​Mapped,​Result extends Collection<Mapped>> QuadConstraintCollector<A,​B,​C,​D,​?,​Result>` | ConstraintCollectors.`toCollection​(QuadFunction<A,​B,​C,​D,​Mapped> groupValueMapping, IntFunction<Result> collectionFunction)` |
    `static <A,​B,​C,​D,​Mapped> QuadConstraintCollector<A,​B,​C,​D,​?,​List<Mapped>>` | ConstraintCollectors.`toList​(QuadFunction<A,​B,​C,​D,​Mapped> groupValueMapping)` | Creates constraint collector that returns `List` of the given element type.
    `static <A,​B,​C,​D,​Key,​Value> QuadConstraintCollector<A,​B,​C,​D,​?,​Map<Key,​Set<Value>>>` | ConstraintCollectors.`toMap​(QuadFunction<? super A,​? super B,​? super C,​? super D,​? extends Key> keyMapper, QuadFunction<? super A,​? super B,​? super C,​? super D,​? extends Value> valueMapper)` | As defined by `ConstraintCollectors.toMap(Function, Function)`.
    `static <A,​B,​C,​D,​Key,​Value> QuadConstraintCollector<A,​B,​C,​D,​?,​Map<Key,​Value>>` | ConstraintCollectors.`toMap​(QuadFunction<? super A,​? super B,​? super C,​? super D,​? extends Key> keyMapper, QuadFunction<? super A,​? super B,​? super C,​? super D,​? extends Value> valueMapper, BinaryOperator<Value> mergeFunction)` | As defined by `ConstraintCollectors.toMap(Function, Function, BinaryOperator)`.
    `static <A,​B,​C,​D,​Key,​Value,​ValueSet extends Set<Value>> QuadConstraintCollector<A,​B,​C,​D,​?,​Map<Key,​ValueSet>>` | ConstraintCollectors.`toMap​(QuadFunction<? super A,​? super B,​? super C,​? super D,​? extends Key> keyMapper, QuadFunction<? super A,​? super B,​? super C,​? super D,​? extends Value> valueMapper, IntFunction<ValueSet> valueSetFunction)` | As defined by `ConstraintCollectors.toMap(Function, Function, IntFunction)`.
    `static <A,​B,​C,​D,​Mapped> QuadConstraintCollector<A,​B,​C,​D,​?,​Set<Mapped>>` | ConstraintCollectors.`toSet​(QuadFunction<A,​B,​C,​D,​Mapped> groupValueMapping)` | As defined by `ConstraintCollectors.toSet(Function)`.
    `static <A,​B,​C,​D,​Key extends Comparable<Key>,​Value> QuadConstraintCollector<A,​B,​C,​D,​?,​SortedMap<Key,​Set<Value>>>` | ConstraintCollectors.`toSortedMap​(QuadFunction<? super A,​? super B,​? super C,​? super D,​? extends Key> keyMapper, QuadFunction<? super A,​? super B,​? super C,​? super D,​? extends Value> valueMapper)` | As defined by `ConstraintCollectors.toSortedMap(Function, Function)`.
    `static <A,​B,​C,​D,​Key extends Comparable<Key>,​Value> QuadConstraintCollector<A,​B,​C,​D,​?,​SortedMap<Key,​Value>>` | ConstraintCollectors.`toSortedMap​(QuadFunction<? super A,​? super B,​? super C,​? super D,​? extends Key> keyMapper, QuadFunction<? super A,​? super B,​? super C,​? super D,​? extends Value> valueMapper, BinaryOperator<Value> mergeFunction)` | As defined by `ConstraintCollectors.toSortedMap(Function, Function, BinaryOperator)`.
    `static <A,​B,​C,​D,​Key extends Comparable<Key>,​Value,​ValueSet extends Set<Value>> QuadConstraintCollector<A,​B,​C,​D,​?,​SortedMap<Key,​ValueSet>>` | ConstraintCollectors.`toSortedMap​(QuadFunction<? super A,​? super B,​? super C,​? super D,​? extends Key> keyMapper, QuadFunction<? super A,​? super B,​? super C,​? super D,​? extends Value> valueMapper, IntFunction<ValueSet> valueSetFunction)` | As defined by `ConstraintCollectors.toSortedMap(Function, Function, IntFunction)`.
    `static <A,​B,​C,​D,​Mapped extends Comparable<Mapped>> QuadConstraintCollector<A,​B,​C,​D,​?,​SortedSet<Mapped>>` | ConstraintCollectors.`toSortedSet​(QuadFunction<A,​B,​C,​D,​Mapped> groupValueMapping)` | As defined by `ConstraintCollectors.toSortedSet(Function)`.

  - ### Uses of QuadFunction in org.optaplanner.core.api.score.stream.quad

    Methods in org.optaplanner.core.api.score.stream.quad with parameters of type QuadFunction
    Modifier and Type | Method | Description
    --- | --- | ---
    `<GroupKey_> UniConstraintStream<GroupKey_>` | QuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKey_> groupKeyMapping)` | Convert the `QuadConstraintStream` to a `UniConstraintStream`, containing the set of tuples resulting from applying the group key mapping function on all tuples of the original stream.
    `<GroupKey_,​ResultContainer_,​Result_> BiConstraintStream<GroupKey_,​Result_>` | QuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKey_> groupKeyMapping, QuadConstraintCollector<A,​B,​C,​D,​ResultContainer_,​Result_> collector)` | Convert the `QuadConstraintStream` to a `BiConstraintStream`, consisting of unique tuples.
    `<GroupKey_,​ResultContainerB_,​ResultB_,​ResultContainerC_,​ResultC_> TriConstraintStream<GroupKey_,​ResultB_,​ResultC_>` | QuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKey_> groupKeyMapping, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerB_,​ResultB_> collectorB, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerC_,​ResultC_> collectorC)` | Convert the `QuadConstraintStream` to a `TriConstraintStream`, consisting of unique tuples with three facts.
    `<GroupKey_,​ResultContainerB_,​ResultB_,​ResultContainerC_,​ResultC_,​ResultContainerD_,​ResultD_> QuadConstraintStream<GroupKey_,​ResultB_,​ResultC_,​ResultD_>` | QuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKey_> groupKeyMapping, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerB_,​ResultB_> collectorB, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerC_,​ResultC_> collectorC, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerD_,​ResultD_> collectorD)` | Convert the `QuadConstraintStream` to a `QuadConstraintStream`, consisting of unique tuples with four facts.
    `<GroupKeyA_,​GroupKeyB_> BiConstraintStream<GroupKeyA_,​GroupKeyB_>` | QuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKeyA_> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​GroupKeyB_> groupKeyBMapping)` | Convert the `QuadConstraintStream` to a `BiConstraintStream`, consisting of unique tuples.
    `<GroupKeyA_,​GroupKeyB_,​GroupKeyC_> TriConstraintStream<GroupKeyA_,​GroupKeyB_,​GroupKeyC_>` | QuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKeyA_> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​GroupKeyB_> groupKeyBMapping, QuadFunction<A,​B,​C,​D,​GroupKeyC_> groupKeyCMapping)` | Convert the `QuadConstraintStream` to a `TriConstraintStream`, consisting of unique tuples with three facts.
    `<GroupKeyA_,​GroupKeyB_,​GroupKeyC_,​GroupKeyD_> QuadConstraintStream<GroupKeyA_,​GroupKeyB_,​GroupKeyC_,​GroupKeyD_>` | QuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKeyA_> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​GroupKeyB_> groupKeyBMapping, QuadFunction<A,​B,​C,​D,​GroupKeyC_> groupKeyCMapping, QuadFunction<A,​B,​C,​D,​GroupKeyD_> groupKeyDMapping)` | Convert the `TriConstraintStream` to a `QuadConstraintStream`, consisting of unique tuples with four facts.
    `<GroupKeyA_,​GroupKeyB_,​GroupKeyC_,​ResultContainerD_,​ResultD_> QuadConstraintStream<GroupKeyA_,​GroupKeyB_,​GroupKeyC_,​ResultD_>` | QuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKeyA_> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​GroupKeyB_> groupKeyBMapping, QuadFunction<A,​B,​C,​D,​GroupKeyC_> groupKeyCMapping, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerD_,​ResultD_> collectorD)` | Combines the semantics of `QuadConstraintStream.groupBy(QuadFunction, QuadFunction)` and `QuadConstraintStream.groupBy(QuadConstraintCollector)`.
    `<GroupKeyA_,​GroupKeyB_,​ResultContainer_,​Result_> TriConstraintStream<GroupKeyA_,​GroupKeyB_,​Result_>` | QuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKeyA_> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​GroupKeyB_> groupKeyBMapping, QuadConstraintCollector<A,​B,​C,​D,​ResultContainer_,​Result_> collector)` | Combines the semantics of `QuadConstraintStream.groupBy(QuadFunction, QuadFunction)` and `QuadConstraintStream.groupBy(QuadConstraintCollector)`.
    `<GroupKeyA_,​GroupKeyB_,​ResultContainerC_,​ResultC_,​ResultContainerD_,​ResultD_> QuadConstraintStream<GroupKeyA_,​GroupKeyB_,​ResultC_,​ResultD_>` | QuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKeyA_> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​GroupKeyB_> groupKeyBMapping, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerC_,​ResultC_> collectorC, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerD_,​ResultD_> collectorD)` | Combines the semantics of `QuadConstraintStream.groupBy(QuadFunction, QuadFunction)` and `QuadConstraintStream.groupBy(QuadConstraintCollector)`.
    `Constraint` | QuadConstraintStream.`impactBigDecimal​(String constraintPackage, String constraintName, Score<?> constraintWeight, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` | As defined by `QuadConstraintStream.impactBigDecimal(String, Score, QuadFunction)`.
    `default Constraint` | QuadConstraintStream.`impactBigDecimal​(String constraintName, Score<?> constraintWeight, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` | Positively or negatively impact the `Score` by the constraintWeight multiplied by the match weight.
    `Constraint` | QuadConstraintStream.`impactConfigurableBigDecimal​(String constraintPackage, String constraintName, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` | As defined by `QuadConstraintStream.impactConfigurableBigDecimal(String, QuadFunction)`.
    `default Constraint` | QuadConstraintStream.`impactConfigurableBigDecimal​(String constraintName, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` | Positively or negatively impact the `Score` by the `ConstraintWeight` for each match.
    `<ResultA_> UniConstraintStream<ResultA_>` | QuadConstraintStream.`map​(QuadFunction<A,​B,​C,​D,​ResultA_> mapping)` | As defined by `UniConstraintStream.map(Function)`.
    `Constraint` | QuadConstraintStream.`penalizeBigDecimal​(String constraintPackage, String constraintName, Score<?> constraintWeight, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` | As defined by `QuadConstraintStream.penalizeBigDecimal(String, Score, QuadFunction)`.
    `default Constraint` | QuadConstraintStream.`penalizeBigDecimal​(String constraintName, Score<?> constraintWeight, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` | Negatively impact the `Score`: subtract the constraintWeight multiplied by the match weight.
    `Constraint` | QuadConstraintStream.`penalizeConfigurableBigDecimal​(String constraintPackage, String constraintName, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` | As defined by `QuadConstraintStream.penalizeConfigurableBigDecimal(String, QuadFunction)`.
    `default Constraint` | QuadConstraintStream.`penalizeConfigurableBigDecimal​(String constraintName, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` | Negatively impact the `Score`: subtract the `ConstraintWeight` multiplied by the match weight.
    `Constraint` | QuadConstraintStream.`rewardBigDecimal​(String constraintPackage, String constraintName, Score<?> constraintWeight, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` | As defined by `QuadConstraintStream.rewardBigDecimal(String, Score, QuadFunction)`.
    `default Constraint` | QuadConstraintStream.`rewardBigDecimal​(String constraintName, Score<?> constraintWeight, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` | Positively impact the `Score`: add the constraintWeight multiplied by the match weight.
    `Constraint` | QuadConstraintStream.`rewardConfigurableBigDecimal​(String constraintPackage, String constraintName, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` | As defined by `QuadConstraintStream.rewardConfigurableBigDecimal(String, QuadFunction)`.
    `default Constraint` | QuadConstraintStream.`rewardConfigurableBigDecimal​(String constraintName, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` | Positively impact the `Score`: add the `ConstraintWeight` multiplied by the match weight.

  - ### Uses of QuadFunction in org.optaplanner.core.api.score.stream.tri

    Methods in org.optaplanner.core.api.score.stream.tri that return QuadFunction
    Modifier and Type | Method | Description
    --- | --- | ---
    `QuadFunction<ResultContainer_,​A,​B,​C,​Runnable>` | TriConstraintCollector.`accumulator()` | A lambda that extracts data from the matched facts, accumulates it in the result container and returns an undo operation for that accumulation.

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

    Methods in org.optaplanner.core.impl.score.stream.drools with parameters of type QuadFunction
    Modifier and Type | Method | Description
    --- | --- | ---
    `default <U,​V,​W,​Y,​Result_> org.drools.model.Variable<Result_>` | DroolsVariableFactory.`createVariable​(String baseName, org.drools.model.Variable<U> source1, org.drools.model.Variable<V> source2, org.drools.model.Variable<W> source3, org.drools.model.Variable<Y> source4, QuadFunction<U,​V,​W,​Y,​Result_> mapping)` | As defined by `DroolsVariableFactory.createVariable(String, Variable, Variable, Variable, Variable, QuadFunction, boolean)` with no flattening.
    `<U,​V,​W,​Y,​Result_> org.drools.model.Variable<Result_>` | DroolsVariableFactory.`createVariable​(String baseName, org.drools.model.Variable<U> source1, org.drools.model.Variable<V> source2, org.drools.model.Variable<W> source3, org.drools.model.Variable<Y> source4, QuadFunction<U,​V,​W,​Y,​Result_> mapping, boolean flatten)` | As defined by `DroolsVariableFactory.createVariable(String, Variable, Function, boolean)`.

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

    Constructors in org.optaplanner.core.impl.score.stream.drools.bi with parameters of type QuadFunction
    Constructor | Description
    --- | ---
    `DroolsGroupingBiConstraintStream​(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractQuadConstraintStream<Solution_,​A,​B,​C,​D> parent, QuadFunction<A,​B,​C,​D,​NewA> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​NewB> groupKeyBMapping)` |
    `DroolsGroupingBiConstraintStream​(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractQuadConstraintStream<Solution_,​A,​B,​C,​D> parent, QuadFunction<A,​B,​C,​D,​NewA> groupKeyMapping, QuadConstraintCollector<A,​B,​C,​D,​?,​NewB> collector)` |

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

    Methods in org.optaplanner.core.impl.score.stream.drools.common with parameters of type QuadFunction
    Modifier and Type | Method | Description
    --- | --- | ---
    `<NewA> UniLeftHandSide<NewA>` | QuadLeftHandSide.`andGroupBy​(QuadFunction<A,​B,​C,​D,​NewA> keyMapping)` |
    `<NewA,​NewB> BiLeftHandSide<NewA,​NewB>` | QuadLeftHandSide.`andGroupBy​(QuadFunction<A,​B,​C,​D,​NewA> keyMappingA, QuadFunction<A,​B,​C,​D,​NewB> keyMappingB)` |
    `<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,​NewD> QuadLeftHandSide<NewA,​NewB,​NewC,​NewD>` | QuadLeftHandSide.`andGroupBy​(QuadFunction<A,​B,​C,​D,​NewA> keyMappingA, QuadFunction<A,​B,​C,​D,​NewB> keyMappingB, QuadFunction<A,​B,​C,​D,​NewC> keyMappingC, QuadFunction<A,​B,​C,​D,​NewD> keyMappingD)` |
    `<NewA,​NewB,​NewC,​NewD> QuadLeftHandSide<NewA,​NewB,​NewC,​NewD>` | QuadLeftHandSide.`andGroupBy​(QuadFunction<A,​B,​C,​D,​NewA> keyMappingA, QuadFunction<A,​B,​C,​D,​NewB> keyMappingB, QuadFunction<A,​B,​C,​D,​NewC> keyMappingC, QuadConstraintCollector<A,​B,​C,​D,​?,​NewD> collectorD)` |
    `<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,​NewD> QuadLeftHandSide<NewA,​NewB,​NewC,​NewD>` | QuadLeftHandSide.`andGroupBy​(QuadFunction<A,​B,​C,​D,​NewA> keyMappingA, QuadFunction<A,​B,​C,​D,​NewB> keyMappingB, QuadConstraintCollector<A,​B,​C,​D,​?,​NewC> collectorC, QuadConstraintCollector<A,​B,​C,​D,​?,​NewD> collectorD)` |
    `<NewA,​NewB> BiLeftHandSide<NewA,​NewB>` | QuadLeftHandSide.`andGroupBy​(QuadFunction<A,​B,​C,​D,​NewA> keyMappingA, QuadConstraintCollector<A,​B,​C,​D,​?,​NewB> collectorB)` |
    `<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,​NewD> QuadLeftHandSide<NewA,​NewB,​NewC,​NewD>` | QuadLeftHandSide.`andGroupBy​(QuadFunction<A,​B,​C,​D,​NewA> keyMappingA, QuadConstraintCollector<A,​B,​C,​D,​?,​NewB> collectorB, QuadConstraintCollector<A,​B,​C,​D,​?,​NewC> collectorC, QuadConstraintCollector<A,​B,​C,​D,​?,​NewD> collectorD)` |
    `<NewA> UniLeftHandSide<NewA>` | QuadLeftHandSide.`andMap​(QuadFunction<A,​B,​C,​D,​NewA> mapping)` |
    `<Solution_> RuleBuilder<Solution_>` | QuadLeftHandSide.`andTerminate​(QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeighter)` |
    `<BoundVar_,​LeftJoinVarA_,​LeftJoinVarB_,​LeftJoinVarC_> Child_` | PatternVariable.`bind​(org.drools.model.Variable<BoundVar_> boundVariable, org.drools.model.Variable<LeftJoinVarA_> leftJoinVariableA, org.drools.model.Variable<LeftJoinVarB_> leftJoinVariableB, org.drools.model.Variable<LeftJoinVarC_> leftJoinVariableC, QuadFunction<A,​LeftJoinVarA_,​LeftJoinVarB_,​LeftJoinVarC_,​BoundVar_> bindingFunction)` | As defined by `PatternVariable.bind(Variable, Variable, BiFunction)`.

  - ### Uses of QuadFunction in org.optaplanner.core.impl.score.stream.drools.quad

    Methods in org.optaplanner.core.impl.score.stream.drools.quad with parameters of type QuadFunction
    Modifier and Type | Method | Description
    --- | --- | ---
    `<GroupKey_> UniConstraintStream<GroupKey_>` | DroolsAbstractQuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKey_> groupKeyMapping)` |
    `<GroupKey_,​ResultContainer_,​Result_> BiConstraintStream<GroupKey_,​Result_>` | DroolsAbstractQuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKey_> groupKeyMapping, QuadConstraintCollector<A,​B,​C,​D,​ResultContainer_,​Result_> collector)` |
    `<GroupKey_,​ResultContainerB_,​ResultB_,​ResultContainerC_,​ResultC_> TriConstraintStream<GroupKey_,​ResultB_,​ResultC_>` | DroolsAbstractQuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKey_> groupKeyMapping, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerB_,​ResultB_> collectorB, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerC_,​ResultC_> collectorC)` |
    `<GroupKey_,​ResultContainerB_,​ResultB_,​ResultContainerC_,​ResultC_,​ResultContainerD_,​ResultD_> QuadConstraintStream<GroupKey_,​ResultB_,​ResultC_,​ResultD_>` | DroolsAbstractQuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKey_> groupKeyMapping, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerB_,​ResultB_> collectorB, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerC_,​ResultC_> collectorC, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerD_,​ResultD_> collectorD)` |
    `<GroupKeyA_,​GroupKeyB_> BiConstraintStream<GroupKeyA_,​GroupKeyB_>` | DroolsAbstractQuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKeyA_> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​GroupKeyB_> groupKeyBMapping)` |
    `<GroupKeyA_,​GroupKeyB_,​GroupKeyC_> TriConstraintStream<GroupKeyA_,​GroupKeyB_,​GroupKeyC_>` | DroolsAbstractQuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKeyA_> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​GroupKeyB_> groupKeyBMapping, QuadFunction<A,​B,​C,​D,​GroupKeyC_> groupKeyCMapping)` |
    `<GroupKeyA_,​GroupKeyB_,​GroupKeyC_,​GroupKeyD_> QuadConstraintStream<GroupKeyA_,​GroupKeyB_,​GroupKeyC_,​GroupKeyD_>` | DroolsAbstractQuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKeyA_> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​GroupKeyB_> groupKeyBMapping, QuadFunction<A,​B,​C,​D,​GroupKeyC_> groupKeyCMapping, QuadFunction<A,​B,​C,​D,​GroupKeyD_> groupKeyDMapping)` |
    `<GroupKeyA_,​GroupKeyB_,​GroupKeyC_,​ResultContainerD_,​ResultD_> QuadConstraintStream<GroupKeyA_,​GroupKeyB_,​GroupKeyC_,​ResultD_>` | DroolsAbstractQuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKeyA_> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​GroupKeyB_> groupKeyBMapping, QuadFunction<A,​B,​C,​D,​GroupKeyC_> groupKeyCMapping, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerD_,​ResultD_> collectorD)` |
    `<GroupKeyA_,​GroupKeyB_,​ResultContainer_,​Result_> TriConstraintStream<GroupKeyA_,​GroupKeyB_,​Result_>` | DroolsAbstractQuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKeyA_> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​GroupKeyB_> groupKeyBMapping, QuadConstraintCollector<A,​B,​C,​D,​ResultContainer_,​Result_> collector)` |
    `<GroupKeyA_,​GroupKeyB_,​ResultContainerC_,​ResultC_,​ResultContainerD_,​ResultD_> QuadConstraintStream<GroupKeyA_,​GroupKeyB_,​ResultC_,​ResultD_>` | DroolsAbstractQuadConstraintStream.`groupBy​(QuadFunction<A,​B,​C,​D,​GroupKeyA_> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​GroupKeyB_> groupKeyBMapping, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerC_,​ResultC_> collectorC, QuadConstraintCollector<A,​B,​C,​D,​ResultContainerD_,​ResultD_> collectorD)` |
    `Constraint` | DroolsAbstractQuadConstraintStream.`impactScoreBigDecimal​(String constraintPackage, String constraintName, Score<?> constraintWeight, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher, ScoreImpactType impactType)` |
    `Constraint` | DroolsAbstractQuadConstraintStream.`impactScoreConfigurableBigDecimal​(String constraintPackage, String constraintName, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher, ScoreImpactType impactType)` |
    `<ResultA_> UniConstraintStream<ResultA_>` | DroolsAbstractQuadConstraintStream.`map​(QuadFunction<A,​B,​C,​D,​ResultA_> mapping)` |

    Constructors in org.optaplanner.core.impl.score.stream.drools.quad with parameters of type QuadFunction
    Constructor | Description
    --- | ---
    `DroolsGroupingQuadConstraintStream​(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractQuadConstraintStream<Solution_,​A,​B,​C,​D> parent, QuadFunction<A,​B,​C,​D,​NewA> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​NewB> groupKeyBMapping, QuadFunction<A,​B,​C,​D,​NewC> groupKeyCMapping, QuadFunction<A,​B,​C,​D,​NewD> groupKeyDMapping)` |
    `DroolsGroupingQuadConstraintStream​(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractQuadConstraintStream<Solution_,​A,​B,​C,​D> parent, QuadFunction<A,​B,​C,​D,​NewA> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​NewB> groupKeyBMapping, QuadFunction<A,​B,​C,​D,​NewC> groupKeyCMapping, QuadConstraintCollector<A,​B,​C,​D,​?,​NewD> collectorD)` |
    `DroolsGroupingQuadConstraintStream​(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractQuadConstraintStream<Solution_,​A,​B,​C,​D> parent, QuadFunction<A,​B,​C,​D,​NewA> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​NewB> groupKeyBMapping, QuadConstraintCollector<A,​B,​C,​D,​?,​NewC> collectorC, QuadConstraintCollector<A,​B,​C,​D,​?,​NewD> collectorD)` |
    `DroolsGroupingQuadConstraintStream​(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractQuadConstraintStream<Solution_,​A,​B,​C,​D> parent, QuadFunction<A,​B,​C,​D,​NewA> groupKeyAMapping, QuadConstraintCollector<A,​B,​C,​D,​?,​NewB> collectorB, QuadConstraintCollector<A,​B,​C,​D,​?,​NewC> collectorC, QuadConstraintCollector<A,​B,​C,​D,​?,​NewD> collectorD)` |

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

    Constructors in org.optaplanner.core.impl.score.stream.drools.tri with parameters of type QuadFunction
    Constructor | Description
    --- | ---
    `DroolsGroupingTriConstraintStream​(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractQuadConstraintStream<Solution_,​A,​B,​C,​D> parent, QuadFunction<A,​B,​C,​D,​NewA> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​NewB> groupKeyBMapping, QuadFunction<A,​B,​C,​D,​NewC> groupKeyCMapping)` |
    `DroolsGroupingTriConstraintStream​(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractQuadConstraintStream<Solution_,​A,​B,​C,​D> parent, QuadFunction<A,​B,​C,​D,​NewA> groupKeyAMapping, QuadFunction<A,​B,​C,​D,​NewB> groupKeyBMapping, QuadConstraintCollector<A,​B,​C,​D,​?,​NewC> collector)` |
    `DroolsGroupingTriConstraintStream​(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractQuadConstraintStream<Solution_,​A,​B,​C,​D> parent, QuadFunction<A,​B,​C,​D,​NewA> groupKeyAMapping, QuadConstraintCollector<A,​B,​C,​D,​?,​NewB> collectorB, QuadConstraintCollector<A,​B,​C,​D,​?,​NewC> collectorC)` |

  - ### Uses of QuadFunction in org.optaplanner.core.impl.score.stream.drools.uni

    Constructors in org.optaplanner.core.impl.score.stream.drools.uni with parameters of type QuadFunction
    Constructor | Description
    --- | ---
    `DroolsGroupingUniConstraintStream​(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractQuadConstraintStream<Solution_,​A,​B,​C,​D> parent, QuadFunction<A,​B,​C,​D,​NewA> groupKeyMapping)` |
    `DroolsMappingUniConstraintStream​(DroolsConstraintFactory<Solution_> constraintFactory, DroolsAbstractQuadConstraintStream<Solution_,​A,​B,​C,​D> parent, QuadFunction<A,​B,​C,​D,​NewA> mapping)` |

  - ### Uses of QuadFunction in org.optaplanner.core.impl.score.stream.penta

    Methods in org.optaplanner.core.impl.score.stream.penta that return QuadFunction
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract QuadFunction<A,​B,​C,​D,​Object[]>` | AbstractPentaJoiner.`getLeftCombinedMapping()` |
    `QuadFunction<A,​B,​C,​D,​Object[]>` | CompositePentaJoiner.`getLeftCombinedMapping()` |
    `QuadFunction<A,​B,​C,​D,​Object[]>` | FilteringPentaJoiner.`getLeftCombinedMapping()` |
    `QuadFunction<A,​B,​C,​D,​Object[]>` | NonePentaJoiner.`getLeftCombinedMapping()` |
    `QuadFunction<A,​B,​C,​D,​Object[]>` | SinglePentaJoiner.`getLeftCombinedMapping()` |
    `abstract QuadFunction<A,​B,​C,​D,​Object>` | AbstractPentaJoiner.`getLeftMapping​(int index)` |
    `QuadFunction<A,​B,​C,​D,​Object>` | CompositePentaJoiner.`getLeftMapping​(int index)` |
    `QuadFunction<A,​B,​C,​D,​Object>` | FilteringPentaJoiner.`getLeftMapping​(int index)` |
    `QuadFunction<A,​B,​C,​D,​Object>` | NonePentaJoiner.`getLeftMapping​(int index)` |
    `QuadFunction<A,​B,​C,​D,​Object>` | SinglePentaJoiner.`getLeftMapping()` |
    `QuadFunction<A,​B,​C,​D,​Object>` | SinglePentaJoiner.`getLeftMapping​(int index)` |

    Constructors in org.optaplanner.core.impl.score.stream.penta with parameters of type QuadFunction
    Constructor | Description
    --- | ---
    `SinglePentaJoiner​(QuadFunction<A,​B,​C,​D,​?> leftMapping, JoinerType joinerType, Function<E,​?> rightMapping)` |

  - ### Uses of QuadFunction in org.optaplanner.core.impl.score.stream.quad

    Methods in org.optaplanner.core.impl.score.stream.quad with parameters of type QuadFunction
    Modifier and Type | Method | Description
    --- | --- | ---
    `default Constraint` | InnerQuadConstraintStream.`impactBigDecimal​(String constraintPackage, String constraintName, Score<?> constraintWeight, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` |
    `default Constraint` | InnerQuadConstraintStream.`impactConfigurableBigDecimal​(String constraintPackage, String constraintName, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` |
    `Constraint` | InnerQuadConstraintStream.`impactScoreBigDecimal​(String constraintPackage, String constraintName, Score<?> constraintWeight, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher, ScoreImpactType impactType)` |
    `Constraint` | InnerQuadConstraintStream.`impactScoreConfigurableBigDecimal​(String constraintPackage, String constraintName, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher, ScoreImpactType impactType)` |
    `default Constraint` | InnerQuadConstraintStream.`penalizeBigDecimal​(String constraintPackage, String constraintName, Score<?> constraintWeight, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` |
    `default Constraint` | InnerQuadConstraintStream.`penalizeConfigurableBigDecimal​(String constraintPackage, String constraintName, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` |
    `default Constraint` | InnerQuadConstraintStream.`rewardBigDecimal​(String constraintPackage, String constraintName, Score<?> constraintWeight, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` |
    `default Constraint` | InnerQuadConstraintStream.`rewardConfigurableBigDecimal​(String constraintPackage, String constraintName, QuadFunction<A,​B,​C,​D,​BigDecimal> matchWeigher)` |

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

    Methods in org.optaplanner.core.impl.score.stream.tri that return QuadFunction
    Modifier and Type | Method | Description
    --- | --- | ---
    `QuadFunction<ResultContainer_,​A,​B,​C,​Runnable>` | DefaultTriConstraintCollector.`accumulator()` |

    Constructors in org.optaplanner.core.impl.score.stream.tri with parameters of type QuadFunction
    Constructor | Description
    --- | ---
    `DefaultTriConstraintCollector​(Supplier<ResultContainer_> supplier, QuadFunction<ResultContainer_,​A,​B,​C,​Runnable> accumulator, Function<ResultContainer_,​Result_> finisher)` |