def METHOD_NAME(
    self,
    exact: bool,
    case_sensitive: bool,
    filter_value: str,
    target: Union[str, List[str]],
) -> bool:
    """
    Returns a boolean indicating if the filter_value (string) is contained
    in the target (string or list of strings).
    - exact: filter_value and target must be the same length (no extra characters)
    - case_sensitive: cases must match between filter_value and target
    """
    # does not match if we don't have anything to compare to
    if target is None:
        return False
    # validate inputs
    if not isinstance(target, (str, list)):
        raise FidesopsException(
            f"Field value '{self.field}' for filter postprocessor must be a string or list of strings, found '{type(target).__name__}'"
        )
    # validate list contents
    if isinstance(target, list):
        if not all(isinstance(item, str) for item in target):
            raise FidesopsException(
                f"Every value in the '{self.field}' list must be a string"
            )
    # prep inputs by converting them to lowercase
    if not case_sensitive:
        filter_value = filter_value.casefold()
        if isinstance(target, list):
            target = [item.casefold() for item in target]
        elif isinstance(target, str):
            target = target.casefold()
    # compare filter_values to a target list
    if isinstance(target, list):
        return any(
            filter_value == item if exact else filter_value in item
            for item in target
        )
    # base case, compare filter_value to a single string
    return filter_value == target if exact else filter_value in target