class_docstr: Utility class for collections. Bundles up the logic we use for "should I
  keep drawing more values?" and handles starting and stopping examples in
  the right place.
  
  Intended usage is something like:
  
  elements = many(data, ...)
  while elements.more():
      add_stuff_to_result()
class_docstr_tok: ["Utility","class","for","collections",".","Bundles","up","the","logic","we","use","for","``","should","I","keep","drawing","more","values","?","''","and","handles","starting","and","stopping","examples","in","the","right","place",".","Intended","usage","is","something","like",":","elements","=","many","(","data",",","...",")","while","elements.more","(",")",":","add_stuff_to_result","(",")"]
code: def __init__(
      self,
      data: "ConjectureData",
      min_size: int,
      max_size: Union[int, float],
      average_size: Union[int, float],
      *,
      forced: Optional[int] = None,
  ) -> None:
      assert 0 <= min_size <= average_size <= max_size
      assert forced is None or min_size <= forced <= max_size
      self.min_size = min_size
      self.max_size = max_size
      self.data = data
      self.forced_size = forced
      self.p_continue = _calc_p_continue(
          average_size - min_size, max_size - min_size
      )
      self.count = 0
      self.rejections = 0
      self.drawn = False
      self.force_stop = False
      self.rejected = False
  
imports: import enum
  import hashlib
  import heapq
  import sys
  from collections import OrderedDict, abc
  from functools import lru_cache
  from typing import TYPE_CHECKING, List, Optional, Sequence, Tuple, Type, TypeVar, Union
  from hypothesis.errors import InvalidArgument
  from hypothesis.internal.compat import int_from_bytes
  from hypothesis.internal.floats import next_up
label_desc: Use image node_id 1 to create a new many object  with example: obj = many(data, min_size, max_size, average_size)