class ReduceBasedDiagnosisHittingSetBuilder {

    MissingInvalidTuple extendWithDiagnosisSetsForNegatedErrorConstraint(MissingInvalidTuple mit) {
        final List<DiagnosisSet> diagnosisSetList = copyDiagnosisSets(mit.getExplanation());

        if(!isMarkedAsCorrect(mit.getNegatedErrorConstraintId())) {
            diagnosisSetList.add(new DiagnosisSet(Collections.singletonList(
                    new DiagnosisElement(mit.getNegatedErrorConstraintId(), mit.getInvolvedParameters(), mit.getMissingValues()))
            ));
        }

        final ConflictSet rootConflictSet = copyRootConflictSet(mit.getExplanation());

        final DiagnosisSets diagnosisSets = new DiagnosisSets(rootConflictSet, diagnosisSetList);

        return new MissingInvalidTuple(
                mit.getNegatedErrorConstraintId(),
                mit.getInvolvedParameters(),
                mit.getMissingValues(),
                diagnosisSets);
    }

    public  ReduceBasedDiagnosisHittingSetBuilder(TestModel testModel);

}