<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def concatenate_node_predicates(node_predicates: NodePredicates) -> NodePredicate: """Concatenate multiple node predicates to a new predicate that requires all predicates to be met. Example usage: """

    # If a predicate outside a list is given, just return it
    if not isinstance(node_predicates, Iterable):
        return node_predicates

    node_predicates = tuple(node_predicates)

    # If only one predicate is given, don't bother wrapping it
    if 1 == len(node_predicates):
        return node_predicates[0]

    def concatenated_node_predicate(graph: BELGraph, node: BaseEntity) -> bool:
        """Pass only for a nodes that pass all enclosed predicates."""
        return all(
            node_predicate(graph, node)
            for node_predicate in node_predicates
        )

    return concatenated_node_predicate