code: def _collect_parameters(parameter_names, args, kwargs, defaults):
          
          parameters = {}
          if defaults is not None:
              zipped_defaults = zip(reversed(parameter_names), reversed(defaults))
              for name, default in zipped_defaults:
                  parameters[name] = default
          for name, value in zip(parameter_names, args):
              parameters[name] = value
          for name, value in kwargs.items():
              parameters[name] = value
          return parameters
docs: Creates a dictionary mapping parameters names to their values in the method call.
  
          :param parameter_names: The method's parameter names
          :type parameter_names: list[string]
          :param args: *args passed into the method
          :type args: list[object]
          :param kwargs: **kwargs passed into the method
          :type kwargs: dict[string, object]
          :param defaults: The method's default values
          :type defaults: list[object]
          :return: Dictionary mapping parameter names to values
          :rtype: dict[string, object]