# File lib/nanoc3/base/dependency_tracker.rb, line 205
    def propagate_outdatedness
      # Unmark everything
      @items.each { |i| i.outdated_due_to_dependencies = false }

      # Mark new items as outdated
      added_items = @items - @previous_items
      added_items.each { |i| i.outdated_due_to_dependencies = true }

      # Mark successors of nil as outdated
      self.successors_of(nil).each do |i|
        i.outdated_due_to_dependencies = true
      end

      # Mark successors of outdated items as outdated
      require 'set'
      unprocessed = @items.select { |i| i.outdated? }
      seen        = Set.new(unprocessed)
      until unprocessed.empty?
        item = unprocessed.shift

        self.direct_successors_of(item).each do |successor|
          next if seen.include?(successor)
          seen << successor

          successor.outdated_due_to_dependencies = true
          unprocessed << successor
        end
      end
    end