code: def do_draw(self, data):
      result = []
      seen = set()
  
      iterator = cu.many(
          data,
          min_size=self.min_size,
          max_size=self.max_size,
          average_size=(self.min_size + self.max_size) / 2,
      )
  
      while iterator.more():
          elt = data.draw(self.elements)
  
          if self.unique:
              if elt in seen:
                  iterator.reject()
                  continue
              seen.add(elt)
          result.append(elt)
  
      dtype = infer_dtype_if_necessary(
          dtype=self.dtype,
          values=result,
          elements=self.elements,
          draw=data.draw,
      )
      return pandas.Index(result, dtype=dtype, tupleize_cols=False)
  
imports: from __future__ import absolute_import, division, print_function
  from collections import OrderedDict
  from copy import copy
  import attr
  import numpy
  import pandas
  import hypothesis.extra.numpy
  import hypothesis.internal.conjecture.utils
  import hypothesis.strategies._internal.core
  from hypothesis.control import reject
  from hypothesis.errors import InvalidArgument
  from hypothesis.internal.compat import abc, hrange
  from hypothesis.internal.coverage import check, check_function
  from hypothesis.internal.validation import check_type, check_valid_interval, check_valid_size, try_convert
label_desc: Use image node_id 2 for calling the ValueIndexStrategy obj's underlying member method code with example usage: obj.do_draw(data) and returns: pandas