class_docstr: A strategy for lists which takes a strategy for its elements and the
  allowed lengths, and generates lists with the correct size and contents.
class_docstr_tok: ["A","strategy","for","lists","which","takes","a","strategy","for","its","elements","and","the","allowed","lengths",",","and","generates","lists","with","the","correct","size","and","contents","."]
code: def __init__(self, elements, min_size=0, max_size=float("inf")):
      super().__init__()
      self.min_size = min_size or 0
      self.max_size = max_size if max_size is not None else float("inf")
      assert 0 <= self.min_size <= self.max_size
      self.average_size = min(
          max(self.min_size * 2, self.min_size + 5),
          0.5 * (self.min_size + self.max_size),
      )
      self.element_strategy = elements
  
imports: import copy
  from typing import Any, Iterable, Tuple, overload
  from hypothesis.errors import InvalidArgument
  from hypothesis.internal.conjecture import utils
  from hypothesis.internal.conjecture.junkdrawer import LazySequenceCopy
  from hypothesis.internal.conjecture.utils import combine_labels
  from hypothesis.internal.reflection import is_identity_function
  from hypothesis.strategies._internal.strategies import T3, T4, T5, Ex, MappedSearchStrategy, SearchStrategy, T, check_strategy, filter_not_satisfied
  from hypothesis.strategies._internal.utils import cacheable, defines_strategy
label_desc: Use image node_id 1 to create a new ListStrategy object from inherited base classes: SearchStrategy with example: obj = ListStrategy(elements, min_size, max_size)