def CaptureVariablesList(self, items, depth, empty_message, limits):
    """Captures list of named items.

    Args:
      items: iterable of (name, value) tuples.
      depth: nested depth of dictionaries and vectors for items.
      empty_message: info status message to set if items is empty.
      limits: Per-object limits for capturing variable data.

    Returns:
      List of formatted variable objects.
    """
    v = []
    for name, value in items:
      if (self._total_size >= self.max_size) or (
          len(v) >= limits.max_list_items):
        v.append({
            'status': {
                'refersTo': 'VARIABLE_VALUE',
                'description': {
                    'format':
                        ('Only first $0 items were captured. Use in an '
                         'expression to see all items.'),
                    'parameters': [str(len(v))]}}})
        break
      v.append(self.CaptureNamedVariable(name, value, depth, limits))

    if not v:
      return [{'status': {
          'refersTo': 'VARIABLE_NAME',
          'description': {'format': empty_message}}}]

    return v
Captures list of named items.

    Args:
      items: iterable of (name, value) tuples.
      depth: nested depth of dictionaries and vectors for items.
      empty_message: info status message to set if items is empty.
      limits: Per-object limits for capturing variable data.

    Returns:
      List of formatted variable objects.