docs: def ParseMultiple(self, stats, knowledge_base):
      """Parse Service registry keys and return WindowsServiceInformation."""
      _ = knowledge_base
      services = {}
      field_map = {
          "Description": "description",
          "DisplayName": "display_name",
          "Group": "group_name",
          "DriverPackageId": "driver_package_id",
          "ErrorControl": "error_control",
          "ImagePath": "image_path",
          "ObjectName": "object_name",
          "Start": "startup_type",
          "Type": "service_type",
          "Parameters/ServiceDLL": "service_dll"
      }
  
      # Field map key should be converted to lowercase because key aquired through
      # self._GetKeyName could have some  characters in different case than the
      # field map, e.g. ServiceDLL and ServiceDll.
      field_map = {k.lower(): v for k, v in iteritems(field_map)}
      for stat in stats:
  
        # Ignore subkeys
        if not stat.HasField("registry_data"):
          continue
  
        service_name = self._GetServiceName(stat.pathspec.path)
        reg_key = os.path.dirname(stat.pathspec.path)
        service_info = rdf_client.WindowsServiceInformation(
            name=service_name, registry_key=reg_key)
        services.setdefault(service_name, service_info)
  
        key = self._GetKeyName(stat.pathspec.path)
  
        if key in field_map:
          try:
            services[service_name].Set(field_map[key],
                                       stat.registry_data.GetValue())
          except type_info.TypeValueError:
  
            # Flatten multi strings into a simple string
            if (stat.registry_type ==
                rdf_client_fs.StatEntry.RegistryType.REG_MULTI_SZ):
              services[service_name].Set(
                  field_map[key],
                  utils.SmartUnicode(stat.registry_data.GetValue()))
            else:
              # Log failures for everything else
              # TODO(user): change this to yield a ParserAnomaly object.
              dest_type = type(services[service_name].Get(field_map[key]))
              logging.debug("Wrong type set for %s:%s, expected %s, got %s",
                            stat.pathspec.path, stat.registry_data.GetValue(),
                            dest_type, type(stat.registry_data.GetValue()))
  
      return itervalues(services)