def METHOD_NAME(
    subset_of_metadata_content, path_list, container, query_params=None
):
    """
    Gets the path values recursively while handling list or dictionary in `subset_of_metadata_content`
    Adds the values to `container`
    Args:
        subset_of_metadata_content (dict or list or str):
                    The value of the field at a certain point;
                    changes during each level of recursion
        path_list (list): The path of the field as a list
                     Example: 'Collection/RangeDateTime/StartDate' ->
                              ['Collection', 'RangeDateTime', 'StartDate']
        container (set): The container that holds all the path values
        query_params (list): The [key, value] pair to distinguish a field in umm-c
                            eg: ["Type", "DELETE"]
    """
    try:
        root_content = subset_of_metadata_content[path_list[0]]
    except KeyError:
        # this is needed because GCMD keywords check needs the placement
        # of the values in the returned list
        container.append(None)
        return
    except IndexError:
        container.append(subset_of_metadata_content)
        return
    new_path = path_list[1:]
    if (
        isinstance(root_content, str)
        or isinstance(root_content, int)
        or isinstance(root_content, float)
    ):
        container.append(root_content)
        return
    elif isinstance(root_content, list):
        if not new_path:
            container.append(root_content)
            return
        if len(new_path) == 1 and query_params:
            try:
                root_content = next(
                    (
                        x
                        for x in root_content
                        if x[query_params[0]] == query_params[1]
                    )
                )
                root_content = root_content[new_path[0]]
                container.append(root_content)
            except:
                container.append(None)
            return
        for each in root_content:
            try:
                CustomChecker.METHOD_NAME(
                    each, new_path, container, query_params
                )
            except KeyError:
                container.append(None)
                continue
    elif isinstance(root_content, dict):
        CustomChecker.METHOD_NAME(
            root_content, new_path, container, query_params
        )