<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _GetUsers(self, key_path_suffix):
 """Virtual key callback to determine the users sub keys. Args: key_path_suffix (str):
 users Windows Registry key path suffix with leading path separator. Returns: WinRegistryKey: the users Windows Registry key or None if not available. """

    user_key_name, _, key_path_suffix = key_path_suffix.partition(
        definitions.KEY_PATH_SEPARATOR)

    # HKEY_USERS\.DEFAULT is an alias for HKEY_USERS\S-1-5-18 which is
    # the Local System account.
    if user_key_name == '.DEFAULT':
      search_key_name = 'S-1-5-18'
    else:
      search_key_name = user_key_name

    user_profile_list_key = self.GetKeyByPath(self._USER_PROFILE_LIST_KEY_PATH)
    if not user_profile_list_key:
      return None

    for user_profile_key in user_profile_list_key.GetSubkeys():
      if search_key_name == user_profile_key.name:
        profile_path_value = user_profile_key.GetValueByName('ProfileImagePath')
        if not profile_path_value:
          break

        profile_path = profile_path_value.GetDataAsObject()
        if not profile_path:
          break

        key_name_upper = user_profile_key.name.upper()
        if key_name_upper.endswith('_CLASSES'):
          profile_path = '\\'.join([
              profile_path, 'AppData', 'Local', 'Microsoft', 'Windows',
              'UsrClass.dat'])
        else:
          profile_path = '\\'.join([profile_path, 'NTUSER.DAT'])

        profile_path_upper = profile_path.upper()
        registry_file = self._GetCachedUserFileByPath(profile_path_upper)
        if not registry_file:
          break

        key_path_prefix = definitions.KEY_PATH_SEPARATOR.join([
            'HKEY_USERS', user_key_name])
        key_path = ''.join([key_path_prefix, key_path_suffix])

        registry_file.SetKeyPathPrefix(key_path_prefix)
        return registry_file.GetKeyByPath(key_path)

    return None