class_docstr: Return kwargs to the appropriate strategy, and the predicate if needed.
  
  For example::
  
      integers().filter(lambda x: x >= 0)
      -> {"min_value": 0"}, None
  
      integers().filter(lambda x: x >= 0 and x % 7)
      -> {"min_value": 0}, lambda x: x % 7
  
  At least in principle - for now we usually return the predicate unchanged
  if needed.
  
  We have a separate get-predicate frontend for each "group" of strategies; e.g.
  for each numeric type, for strings, for bytes, for collection sizes, etc.
code: def unchanged(cls, predicate: Predicate) -> "ConstructivePredicate":
      return cls({}, predicate)
  
imports: import ast
  import inspect
  import math
  import operator
  from decimal import Decimal
  from fractions import Fraction
  from functools import partial
  from typing import Any, Callable, Collection, Dict, NamedTuple, Optional, TypeVar
  from hypothesis.internal.compat import ceil, floor
  from hypothesis.internal.floats import next_down, next_up
  from hypothesis.internal.reflection import extract_lambda_source
label_desc: Use image node_id 1 for calling the ConstructivePredicate obj's underlying member method code with example usage: obj.unchanged(cls, predicate) and returns: cls