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.

def _prepare_find(cls, *args, **kw):
		"""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.
		"""
		
		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