class_docstr: A strategy which produces dicts with a fixed set of keys, given a
  strategy for each of their equivalent values.
  
  e.g. {'foo' : some_int_strategy} would generate dicts with the single
  key 'foo' mapping to some integer.
class_docstr_tok: ["A","strategy","which","produces","dicts","with","a","fixed","set","of","keys",",","given","a","strategy","for","each","of","their","equivalent","values",".","e.g",".","{","'foo","'",":","some_int_strategy","}","would","generate","dicts","with","the","single","key","'foo","'","mapping","to","some","integer","."]
code: def do_draw(self, data):
      result = data.draw(self.fixed)
      remaining = [
          k for k, v in self.optional.items() if not v.is_empty
      ]
      should_draw = cu.many(
          data,
          min_size=0,
          max_size=len(remaining),
          average_size=len(remaining) / 2,
      )
      while should_draw.more():
          j = data.draw_integer(0, len(remaining) - 1)
          remaining[-1], remaining[j] = remaining[j], remaining[-1]
          key = remaining.pop()
          result[key] = data.draw(self.optional[key])
      return result
  
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 4 for calling the FixedAndOptionalKeysDictStrategy obj's underlying member method code with example usage: obj.do_draw(data) and returns: result