code: public void reward(RuleContext kcontext, BigDecimal hardWeightMultiplier, BigDecimal mediumWeightMultiplier, BigDecimal softWeightMultiplier) {
          Rule rule = kcontext.getRule();
          BiConsumer<RuleContext, HardMediumSoftBigDecimalScore> matchExecutor = matchExecutorByScoreMap.get(rule);
          if (matchExecutor == null) {
              throw new IllegalStateException("The DRL rule (" + rule.getPackageName() + ":" + rule.getName()
                      + ") does not match a @" + ConstraintWeight.class.getSimpleName() + " on the @"
                      + ConstraintConfiguration.class.getSimpleName() + " annotated class.");
          }
          matchExecutor.accept(kcontext, HardMediumSoftBigDecimalScore.of(hardWeightMultiplier, mediumWeightMultiplier, softWeightMultiplier));
      }
docs: Reward a match by the {@link ConstraintWeight} multiplied with the specific weightMultiplier per score level.
  Slower than {@link #reward(RuleContext, BigDecimal)}.
  @param kcontext never null, the magic variable in DRL
  @param hardWeightMultiplier at least 0
  @param mediumWeightMultiplier at least 0
  @param softWeightMultiplier at least 0