def METHOD_NAME(self):
    cleaned_data = super().METHOD_NAME()
    duplicate_interfaces = {
        *cleaned_data.get("algorithm_inputs", [])
    }.intersection({*cleaned_data.get("algorithm_outputs", [])})
    if duplicate_interfaces:
        raise ValidationError(
            f"The sets of Algorithm Inputs and Algorithm Outputs must be unique: "
            f"{oxford_comma(duplicate_interfaces)} present in both"
        )
    submission_kind = cleaned_data["submission_kind"]
    total_number_of_submissions_allowed = cleaned_data[
        "total_number_of_submissions_allowed"
    ]
    if (
        submission_kind == SubmissionKindChoices.ALGORITHM
        and not total_number_of_submissions_allowed
    ):
        try:
            request = ChallengeRequest.objects.get(
                short_name=self.instance.challenge.short_name
            )
            error_addition = f"The corresponding challenge request lists the following limits: Preliminary phase: {request.phase_1_number_of_submissions_per_team * request.expected_number_of_teams} Final test phase: {request.phase_2_number_of_submissions_per_team * request.expected_number_of_teams}. Set the limits according to the phase type. "
        except ObjectDoesNotExist:
            error_addition = "There is no corresponding challenge request."
        raise ValidationError(
            "For phases that take an algorithm as submission input, "
            "the total_number_of_submissions_allowed needs to be set. "
            + error_addition
        )
    return cleaned_data