class UniqueInformationRequirementValidator extends SimpleDMNValidator {

    @Override
    public List<String> validate(DMNModelRepository dmnModelRepository) {
        List<String> errors = new ArrayList<>();

        if (dmnModelRepository == null) {
            throw new IllegalArgumentException("Missing definitions");
        }

        for (TDefinitions definitions: dmnModelRepository.getAllDefinitions()) {
            for (TDRGElement element : dmnModelRepository.findDRGElements(definitions)) {
                if (element instanceof TDecision) {
                    List<TInformationRequirement> irList = ((TDecision) element).getInformationRequirement();
                    validate(getReferences(irList), element, "InformationRequirement", errors);
                } else if (element instanceof TDecisionService) {
                    List<TDMNElementReference> inputData = ((TDecisionService) element).getInputData();
                    validate(inputData, element, "InputData", errors);
                    List<TDMNElementReference> inputDecision = ((TDecisionService) element).getInputDecision();
                    validate(inputDecision, element, "InputDecision", errors);
                }
            }
        }

        return errors;
    }

    public  UniqueInformationRequirementValidator();
    public  UniqueInformationRequirementValidator(BuildLogger logger);

}