docs: def _dereference_args(pipeline_name, args, kwargs):
    """Dereference a Pipeline's arguments that are slots, validating them.
  
    Each argument value passed in is assumed to be a dictionary with the format:
      {'type': 'value', 'value': 'serializable'}  # A resolved value.
      {'type': 'slot', 'slot_key': 'str() on a db.Key'}  # A pending Slot.
  
    Args:
      pipeline_name: The name of the pipeline class; used for debugging.
      args: Iterable of positional arguments.
      kwargs: Dictionary of keyword arguments.
  
    Returns:
      Tuple (args, kwargs) where:
        Args: A list of positional arguments values that are all dereferenced.
        Kwargs: A list of keyword arguments values that are all dereferenced.
  
    Raises:
      SlotNotFilledError if any of the supplied 'slot_key' records are not
      present in the Datastore or have not yet been filled.
      UnexpectedPipelineError if an unknown parameter type was passed.
    """
    lookup_slots = set()
    for arg in itertools.chain(args, kwargs.itervalues()):
      if arg['type'] == 'slot':
        lookup_slots.add(db.Key(arg['slot_key']))
  
    slot_dict = {}
    for key, slot_record in zip(lookup_slots, db.get(lookup_slots)):
      if slot_record is None or slot_record.status != _SlotRecord.FILLED:
        raise SlotNotFilledError(
            'Slot "%s" missing its value. From %s(*args=%s, **kwargs=%s)' %
            (key, pipeline_name, _short_repr(args), _short_repr(kwargs)))
      slot_dict[key] = slot_record.value
  
    arg_list = []
    for current_arg in args:
      if current_arg['type'] == 'slot':
        arg_list.append(slot_dict[db.Key(current_arg['slot_key'])])
      elif current_arg['type'] == 'value':
        arg_list.append(current_arg['value'])
      else:
        raise UnexpectedPipelineError('Unknown parameter type: %r' % current_arg)
  
    kwarg_dict = {}
    for key, current_arg in kwargs.iteritems():
      if current_arg['type'] == 'slot':
        kwarg_dict[key] = slot_dict[db.Key(current_arg['slot_key'])]
      elif current_arg['type'] == 'value':
        kwarg_dict[key] = current_arg['value']
      else:
        raise UnexpectedPipelineError('Unknown parameter type: %r' % current_arg)
  
    return (arg_list, kwarg_dict)