class_docstr: Resuming from a foreach join should work.
  Check that data changes in all downstream steps after resume.
code: def step_join(self, inputs):
      self.after = True
      if is_resumed():
          self.data = "resume"
      else:
          self.data = "run"
          raise ResumeFromHere()
      from itertools import chain
  
      self.var = list(
          sorted(chain.from_iterable(i.var for i in inputs))
      )
      self.stack = inputs[0].stack
  
file_path: metaflow/test/core/tests/resume_foreach_join.py
imports: from metaflow_test import MetaflowTest, ExpectationFailed, steps
label_desc: Use image node_id 4 for calling the ResumeForeachJoinTest obj's underlying member method code with example usage: obj.step_join(inputs) without return types