def METHOD_NAME(node, active_variables):
    '''Determines whether this node contains variables that are active.
    :param node: the PSyIR node that is being evaluated.
    :type node: :py:class:`psyclone.psyir.nodes.Node`
    :param active_variables: a list of active variables either as \
        PSyIR symbols or as strings.
    :type active_variables: \
        List[:py:class:`psyclone.psyir.symbols.DataSymbol`] | \
        List[str]
    :returns: True if active and False otherwise.
    :rtype: bool
    :raises TypeError: if the node argument is not a Node.
    :raises TypeError: if the active_variables argument is not a list.
    :raises ValueError: if the active variables list does not contain \
        datasymbols or if the list does not contain strings.
    '''
    if not isinstance(node, Node):
        raise TypeError(
            f"The node argument to the node_is_active() method should be a "
            f"PSyIR Node, but found {type(node).__name__}")
    if not isinstance(active_variables, list):
        raise TypeError(
            f"The active_variables argument to the node_is_active() method "
            f"should be a list, but found {type(active_variables).__name__}.")
    if not (all(isinstance(item, DataSymbol) for item in active_variables) or
            all(isinstance(item, str) for item in active_variables)):
        item_types = [type(item).__name__ for item in active_variables]
        raise ValueError(
            f"Expected the active_variables argument to the node_is_active() "
            f"method to be a list containing either solely PSyIR DataSymbols "
            f"or solely strings, but found {item_types}.")
    if active_variables and isinstance(active_variables[0], str):
        for reference in node.walk(Reference):
            if reference.symbol.name.lower() in active_variables:
                return True
    else:
        for reference in node.walk(Reference):
            if reference.symbol in active_variables:
                return True
    return False