# File lib/vimmatelib/files.rb, line 129
    def refresh
      super
      # Find files to remove
      files_to_remove = Set.new
      all_paths = Set.new
      each do |file|
        file.refresh
        if File.exist? file.path
          all_paths << file.path
        else
          files_to_remove << file
          @tree_signal.call(:remove, file)
        end
      end
      @files -= files_to_remove

      # Find files to add
      begin
        Dir.foreach(@path) do |file|
          # Skip hidden files
          next if file =~ /^\./
          path = File.join(@path, file)
          next if @exclude_file_list.any? {|f| path[-(f.size+1)..-1] == "/#{f}" }
          # Skip files that we already have
          next if all_paths.include? path
          # Add the new file
          @files << if File.directory? path
                      ListedDirectory.new(path, @exclude_file_list, self, &@tree_signal)
                    else
                      ListedFile.new(path, self, &@tree_signal)
                    end
        end
      rescue Errno::ENOENT
      end
      self
    end