code: def _get_parts_list(to_go, so_far=[[]], ticker=None):
      
      try:
          part = to_go.pop(0)
      except IndexError:
          return so_far, ticker
  
      # Lists of input groups
      if isinstance(part, list) and any(isinstance(e, list) for e in part):
          while len(part) > 0:
              so_far, ticker = _get_parts_list(part, so_far, ticker)
              ticker.tick()
      # Input Group
      elif isinstance(part, list) and any(isinstance(e, Input) for e in part):
          while len(part) > 0:
              so_far, ticker = _get_parts_list(part, so_far, ticker)
      # Magic Inputs
      elif isinstance(part, Input) and part.is_magic:
          inputs = part.eval()
          while len(inputs) > 0:
              so_far, ticker = _get_parts_list(inputs, so_far, ticker)
              ticker.tick()
      # Normal inputs
      elif isinstance(part, Input) and not part.is_magic:
          so_far[ticker.value].append(part)
      # Everything else
      else:
          so_far = _append(so_far, part)
  
      return so_far, ticker
docs: Iterates over to_go, building the list of parts. To provide
      items for the beginning, use so_far.