code: def _prepare_find(cls, *args, **kw):
  		
  		
  		cls, collection, query, options = cls._prepare_query(
  				cls.FIND_MAPPING,
  				cls.FIND_OPTIONS,
  				*args,
  				**kw
  			)
  		
  		if 'await' in options:
  			raise TypeError("Await is hard-deprecated as reserved keyword in Python 3.7, use wait instead.")
  		
  		if 'cursor_type' in options and {'tail', 'wait'} & set(options):
  			raise TypeError("Can not combine cursor_type and tail/wait arguments.")
  		
  		elif options.pop('tail', False):
  			options['cursor_type'] = CursorType.TAILABLE_AWAIT if options.pop('wait', True) else CursorType.TAILABLE
  		
  		elif 'wait' in options:
  			raise TypeError("Wait option only applies to tailing cursors.")
  		
  		modifiers = options.get('modifiers', dict())
  		
  		if 'max_time_ms' in options:
  			modifiers['$maxTimeMS'] = options.pop('max_time_ms')
  		
  		if modifiers:
  			options['modifiers'] = modifiers
  		
  		return cls, collection, query, options
docs: Execute a find and return the resulting queryset using combined plain and parametric query generation.
  		
  		Additionally, performs argument case normalization, refer to the `_prepare_query` method's docstring.