Parse the found release files.

def ParseMultiple(self, stats, file_objects, knowledge_base):
    """Parse the found release files."""
    _ = knowledge_base

    # Collate files into path: contents dictionary.
    found_files = self._Combine(stats, file_objects)

    # Determine collected files and apply weighting.
    weights = [w for w in self.WEIGHTS if w.path in found_files]
    weights = sorted(weights, key=lambda x: x.weight)

    for _, path, handler in weights:
      contents = found_files[path]
      obj = handler(contents)

      complete, result = obj.Parse()
      if result is None:
        continue
      elif complete:
        yield rdf_protodict.Dict({
            'os_release': result.release,
            'os_major_version': result.major,
            'os_minor_version': result.minor
        })
        return

    # Amazon AMIs place release info in /etc/system-release.
    # https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html
    system_release = found_files.get('/etc/system-release', None)
    if system_release and 'Amazon Linux' in system_release:
      match_object = ReleaseFileParseHandler.RH_RE.search(system_release)
      if match_object and match_object.lastindex > 1:
        yield rdf_protodict.Dict({
            'os_release': 'AmazonLinuxAMI',
            'os_major_version': int(match_object.group(1)),
            'os_minor_version': int(match_object.group(2))
        })
        return

    # Fall back to /etc/os-release.
    results_dict = self._ParseOSReleaseFile(found_files)
    if results_dict is not None:
      yield results_dict
      return

    # No successful parse.
    yield rdf_anomaly.Anomaly(
        type='PARSER_ANOMALY', symptom='Unable to determine distribution.')