docs: def _ExtractList(self, fields, ignores=(",",), terminators=()):
      """Extract a list from the given fields."""
      extracted = []
      i = 0
      for i, field in enumerate(fields):
        # Space-separated comma; ignore, but this is not a finished list.
        # Similar for any other specified ignores (eg, equals sign).
        if field in ignores:
          continue
  
        # However, some fields are specifically meant to terminate iteration.
        if field in terminators:
          break
  
        extracted.append(field.strip("".join(ignores)))
        # Check for continuation; this will either be a trailing comma or the
        # next field after this one being a comma. The lookahead here is a bit
        # nasty.
        if not (field.endswith(",") or
                set(fields[i + 1:i + 2]).intersection(ignores)):
          break
  
      return extracted, fields[i + 1:]