def METHOD_NAME(product_name: str, product_version: str,
                             product_version_details: JsonObject, images_or_recipes: str,
                             id_change_map: IdChangeMap) -> product_catalog.NameIdTupleList:
    """
    Looks at the specified product version entry from the Cray Product Catalog.
    Based on the 'images_or_recipes' parameter, looks at the 'images' or 'recipes' field of the
    entry. If no such field exists, then there are no IDs to be updated. If the field exists,
    its contents are scanned for IDs that match ones in the specified id_change_map.
    Returns a list of tuples: (image_or_recipe_name, new_ims_id_for_this_image_or_recipe)
    """
    name_id_list = []
    if not id_change_map:
        # Nothing to do
        return name_id_list
    if not images_or_recipes in product_version_details:
        # No field for images or recipes
        return name_id_list
    prod_ver_imgrec_map = product_version_details[images_or_recipes]
    # The contents of this field should be a dictionary
    if not isinstance(prod_ver_imgrec_map, dict):
        LOGGER.debug("Product catalog entry for '%s' version '%s' contains '%s' field which is "
                     "type %s instead of dict", product_name, product_version, images_or_recipes,
                     str(type(prod_ver_imgrec_map)))
        return name_id_list
    # This dictionary should map image/recipe names to another dictionary, and that
    # second dictionary should include an id field, which maps to the IMS ID for that image/recipe
    # So parse through this and look for any IDs that need to be replaced.
    for imgrec_name, imgrec_data in prod_ver_imgrec_map.items():
        if not isinstance(imgrec_data, dict):
            LOGGER.debug("Product catalog entry for '%s' version '%s' contains %s '%s' with "
                         "unexpected data format: %s", product_name, product_version,
                         images_or_recipes, imgrec_name, str(imgrec_data))
            continue
        if "id" not in imgrec_data:
            LOGGER.debug("Product catalog entry for '%s' version '%s' contains %s '%s' with no "
                         "'id' data: %s", product_name, product_version, images_or_recipes,
                         imgrec_name, str(imgrec_data))
            continue
        imgrec_id = imgrec_data["id"]
        if imgrec_id in id_change_map:
            # This means that this ID was changed during the import
            name_id_list.append((imgrec_name, id_change_map[imgrec_id]))
    return name_id_list