class HardSoftLongScoreInliner extends AbstractScoreInliner<HardSoftLongScore> {

    private long hardScore;
    private long softScore;

    HardSoftLongScoreInliner(boolean constraintMatchEnabled) {
        super(constraintMatchEnabled);
    }

    @Override
    public WeightedScoreImpacter<HardSoftLongScore, HardSoftLongScoreContext> buildWeightedScoreImpacter(Constraint constraint,
            HardSoftLongScore constraintWeight) {<FILL_FUNCTION_BODY>}

    @Override
    public HardSoftLongScore extractScore(int initScore) {
        return HardSoftLongScore.ofUninitialized(initScore, hardScore, softScore);
    }

    @Override
    public String toString() {
        return HardSoftLongScore.class.getSimpleName() + " inliner";
    }

}

        validateConstraintWeight(constraint, constraintWeight);
        HardSoftLongScoreContext context =
                new HardSoftLongScoreContext(this, constraint, constraintWeight,
                        impact -> this.hardScore += impact, impact -> this.softScore += impact);
        if (constraintWeight.softScore() == 0L) {
            return WeightedScoreImpacter.of(context,
                    (HardSoftLongScoreContext ctx, long matchWeight, JustificationsSupplier justificationsSupplier) -> ctx
                            .changeHardScoreBy(matchWeight, justificationsSupplier));
        } else if (constraintWeight.hardScore() == 0L) {
            return WeightedScoreImpacter.of(context,
                    (HardSoftLongScoreContext ctx, long matchWeight, JustificationsSupplier justificationsSupplier) -> ctx
                            .changeSoftScoreBy(matchWeight, justificationsSupplier));
        } else {
            return WeightedScoreImpacter.of(context,
                    (HardSoftLongScoreContext ctx, long matchWeight, JustificationsSupplier justificationsSupplier) -> ctx
                            .changeScoreBy(matchWeight, justificationsSupplier));
        }
    
<methods>public static ScoreInliner_ buildScoreInliner(ScoreDefinition<Score_>, boolean) ,public abstract WeightedScoreImpacter<org.optaplanner.core.api.score.buildin.hardsoftlong.HardSoftLongScore,?> buildWeightedScoreImpacter(org.optaplanner.core.api.score.stream.Constraint, org.optaplanner.core.api.score.buildin.hardsoftlong.HardSoftLongScore) ,public abstract org.optaplanner.core.api.score.buildin.hardsoftlong.HardSoftLongScore extractScore(int) ,public final Map<java.lang.String,ConstraintMatchTotal<org.optaplanner.core.api.score.buildin.hardsoftlong.HardSoftLongScore>> getConstraintMatchTotalMap() ,public final Map<java.lang.Object,Indictment<org.optaplanner.core.api.score.buildin.hardsoftlong.HardSoftLongScore>> getIndictmentMap() ,public boolean isConstraintMatchEnabled() <variables>private static final java.lang.String CUSTOM_SCORE_INLINER_CLASS_PROPERTY_NAME,protected final non-sealed boolean constraintMatchEnabled,private final non-sealed Map<java.lang.String,DefaultConstraintMatchTotal<org.optaplanner.core.api.score.buildin.hardsoftlong.HardSoftLongScore>> constraintMatchTotalMap,private final non-sealed Map<java.lang.Object,DefaultIndictment<org.optaplanner.core.api.score.buildin.hardsoftlong.HardSoftLongScore>> indictmentMap