code: def check_empty_foreaches(graph):
      msg = (
          "Step *{0.name}* is a foreach split that has no children: "
          "it is followed immediately by a join step, *{join}*. Add "
          "at least one step between the split and the join."
      )
      for node in graph:
          if node.type == "foreach":
              joins = [
                  n for n in node.out_funcs if graph[n].type == "join"
              ]
              if joins:
                  raise LintWarn(msg.format(node, join=joins[0]))
  
imports: import re
  from .exception import MetaflowException
  from .util import all_equal
label_desc: Use image node_id 12 for calling a global function with example usage: check_empty_foreaches(graph) without return types