def METHOD_NAME(cls, info: ResolveInfo, instance, data, **kwargs):
    cleaned_input = super().METHOD_NAME(info, instance, data, **kwargs)
    try:
        cleaned_input = validate_slug_and_generate_if_needed(
            instance, "name", cleaned_input
        )
    except ValidationError as error:
        error.code = MenuErrorCode.REQUIRED.value
        raise ValidationError({"slug": error})
    items = []
    for item in cleaned_input.get("items", []):
        category = item.get("category")
        collection = item.get("collection")
        page = item.get("page")
        url = item.get("url")
        if len([i for i in [category, collection, page, url] if i]) > 1:
            raise ValidationError(
                {
                    "items": ValidationError(
                        "More than one item provided.",
                        code=MenuErrorCode.TOO_MANY_MENU_ITEMS.value,
                    )
                }
            )
        if category:
            category = cls.get_node_or_error(
                info, category, field="items", only_type=Category
            )
            item["category"] = category
        elif collection:
            collection = cls.get_node_or_error(
                info, collection, field="items", only_type=Collection
            )
            item["collection"] = collection
        elif page:
            page = cls.get_node_or_error(info, page, field="items", only_type=Page)
            item["page"] = page
        elif not url:
            raise ValidationError(
                {
                    "items": ValidationError(
                        "No menu item provided.",
                        code=MenuErrorCode.NO_MENU_ITEM_PROVIDED.value,
                    )
                }
            )
        items.append(item)
    cleaned_input["items"] = items
    return cleaned_input