<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _ListFileEntry( self, file_system, file_entry, parent_full_path, output_writer):
 """Lists a file entry. Args: file_system (dfvfs.FileSystem):
 file system that contains the file entry. file_entry (dfvfs.FileEntry):
 file entry to list. parent_full_path (str):
 full path of the parent file entry. output_writer (StdoutWriter):
 output writer. """

    # Since every file system implementation can have their own path
    # segment separator we are using JoinPath to be platform and file system
    # type independent.
    full_path = file_system.JoinPath([parent_full_path, file_entry.name])
    if not self._list_only_files or file_entry.IsFile():
      output_writer.WriteFileEntry(full_path)

    for sub_file_entry in file_entry.sub_file_entries:
      self._ListFileEntry(file_system, sub_file_entry, full_path, output_writer)