code: @Override
      public void configureConstraintWeight(Rule rule, HardMediumSoftBigDecimalScore constraintWeight) {
          super.configureConstraintWeight(rule, constraintWeight);
          BiConsumer<RuleContext, BigDecimal> matchExecutor;
          if (constraintWeight.equals(HardMediumSoftBigDecimalScore.ZERO)) {
              matchExecutor = (RuleContext kcontext, BigDecimal matchWeight) -> {};
          } else if (constraintWeight.getMediumScore().equals(BigDecimal.ZERO) && constraintWeight.getSoftScore().equals(BigDecimal.ZERO)) {
              matchExecutor = (RuleContext kcontext, BigDecimal matchWeight)
                      -> addHardConstraintMatch(kcontext, constraintWeight.getHardScore().multiply(matchWeight));
          } else if (constraintWeight.getHardScore().equals(BigDecimal.ZERO) && constraintWeight.getSoftScore().equals(BigDecimal.ZERO)) {
              matchExecutor = (RuleContext kcontext, BigDecimal matchWeight)
                      -> addMediumConstraintMatch(kcontext, constraintWeight.getMediumScore().multiply(matchWeight));
          } else if (constraintWeight.getHardScore().equals(BigDecimal.ZERO) && constraintWeight.getMediumScore().equals(BigDecimal.ZERO)) {
              matchExecutor = (RuleContext kcontext, BigDecimal matchWeight)
                      -> addSoftConstraintMatch(kcontext, constraintWeight.getSoftScore().multiply(matchWeight));
          } else {
              matchExecutor = (RuleContext kcontext, BigDecimal matchWeight)
                      -> addMultiConstraintMatch(kcontext,
                      constraintWeight.getHardScore().multiply(matchWeight),
                      constraintWeight.getMediumScore().multiply(matchWeight),
                      constraintWeight.getSoftScore().multiply(matchWeight));
          }
          matchExecutorByNumberMap.put(rule, matchExecutor);
          matchExecutorByScoreMap.put(rule, (RuleContext kcontext,
                  HardMediumSoftBigDecimalScore weightMultiplier) -> addMultiConstraintMatch(kcontext,
                  constraintWeight.getHardScore().multiply(weightMultiplier.getHardScore()),
                  constraintWeight.getMediumScore().multiply(weightMultiplier.getMediumScore()),
                  constraintWeight.getSoftScore().multiply(weightMultiplier.getSoftScore())));
      }
docs: ************************************************************************