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 do_draw(self, data):
      if self.element_strategy.is_empty:
          assert self.min_size == 0
          return []
  
      elements = cu.many(
          data,
          min_size=self.min_size,
          max_size=self.max_size,
          average_size=self.average_size,
      )
      result = []
      while elements.more():
          result.append(data.draw(self.element_strategy))
      return result
  
imports: from __future__ import absolute_import, division, print_function
  from collections import OrderedDict
  import hypothesis.internal.conjecture.utils
  from hypothesis.errors import InvalidArgument
  from hypothesis.internal.conjecture.junkdrawer import LazySequenceCopy
  from hypothesis.internal.conjecture.utils import combine_labels
  from hypothesis.strategies._internal.strategies import MappedSearchStrategy, SearchStrategy, filter_not_satisfied
label_desc: Use image node_id 5 for calling the ListStrategy obj's underlying member method code with example usage: obj.do_draw(data) and returns: result, list