code: def do_draw(self, data):
      # For bounded integers, make the bounds and near-bounds more likely.
      forced = None
      if (
          self.end is not None
          and self.start is not None
          and self.end - self.start > 127
      ):
          bits = data.draw_integer(0, 127)
          forced = {
              122: self.start,
              123: self.start,
              124: self.end,
              125: self.end,
              126: self.start + 1,
              127: self.end - 1,
          }.get(bits)
  
      return data.draw_integer(
          min_value=self.start, max_value=self.end, forced=forced
      )
  
imports: import math
  from decimal import Decimal
  from fractions import Fraction
  from typing import Literal, Optional, Union
  from hypothesis.control import reject
  from hypothesis.errors import InvalidArgument
  from hypothesis.internal.filtering import get_float_predicate_bounds, get_integer_predicate_bounds
  from hypothesis.internal.floats import SMALLEST_SUBNORMAL, float_of, float_to_int, int_to_float, is_negative, next_down, next_down_normal, next_up, next_up_normal, width_smallest_normals
  from hypothesis.internal.validation import check_type, check_valid_bound, check_valid_interval
  from hypothesis.strategies._internal.misc import nothing
  from hypothesis.strategies._internal.strategies import SampledFromStrategy, SearchStrategy
  from hypothesis.strategies._internal.utils import cacheable, defines_strategy
label_desc: Use image node_id 3 for calling the IntegersStrategy obj's underlying member method code with example usage: obj.do_draw(data) and returns: data