code: def list_element_combinations_variadic(
      elements_specification
      ):
  
      
  
      lists = [list(list_generated) for index, element_specification in enumerate(elements_specification) for list_generated in itertools.product(*elements_specification[:index + 1])]
      return lists
docs: This function accepts a specification of lists of elements for each place in
      lists in the form of a list, the elements of which are lists of possible
      elements and returns a list of lists corresponding to the combinations of
      elements of the specification with varying numbers of elements.
  
      For example, the list elements specification [[10, 20], [30, 40], [50, 60]]
      yields the following lists:
  
      [10]
      [20]
      [10, 30]
      [10, 40]
      [20, 30]
      [20, 40]
      [10, 30, 50]
      [10, 30, 60]
      [10, 40, 50]
      [10, 40, 60]
      [20, 30, 50]
      [20, 30, 60]
      [20, 40, 50]
      [20, 40, 60]