code: def _split_iso9660_filename(fullname):
      # type: (bytes) -> Tuple[bytes, bytes, bytes]
      '''
      A function to split an ISO 9660 filename into its constituent parts.  This
      is the name, the extension, and the version number.
  
      Parameters:
       fullname - The name to split.
      Returns:
       A tuple containing the name, extension, and version.
      '''
      namesplit = fullname.split(b';')
      version = b''
      if len(namesplit) > 1:
          version = namesplit.pop()
  
      rest = b';'.join(namesplit)
  
      dotsplit = rest.split(b'.')
      if len(dotsplit) == 1:
          name = dotsplit[0]
          extension = b''
      else:
          name = b'.'.join(dotsplit[:-1])
          extension = dotsplit[-1]
  
      return (name, extension, versionf _split_iso9660_filename(fullname):
      # type: (bytes) -> Tuple[bytes, bytes, bytes]
      '''
      A function to split an ISO 9660 filename into its constituent parts.  This
      is the name, the extension, and the version number.
  
      Parameters:
       fullname - The name to split.
      Returns:
       A tuple containing the name, extension, and version.
      '''
      namesplit = fullname.split(b';')
      version = b''
      if len(namesplit) > 1:
          version = namesplit.pop()
  
      rest = b';'.join(namesplit)
  
      dotsplit = rest.split(b'.')
      if len(dotsplit) == 1:
          name = dotsplit[0]
          extension = b''
      else:
          name = b'.'.join(dotsplit[:-1])
          extension = dotsplit[-1]
  
      return (name, extension, version)
docs: A function to split an ISO 9660 filename into its constituent parts.  This
      is the name, the extension, and the version number.
  
      Parameters:
       fullname - The name to split.
      Returns:
       A tuple containing the name, extension, and version.