# File lib/cft/rpm.rb, line 107
    def self.shadow(packages)
        result = {}
        packages.each do |leaf|
            result[leaf] ||= []
            leaf.requires.each do |req|
                packages.reject{ |k| k == leaf }.each do |k|
                    if req.name[0,1] == '/'
                        if k.files.find { |file| file.path == req.name }
                            result[leaf] << k
                        end
                    else
                        result[leaf] << k if req.satisfy?(k)
                    end
                end
            end
        end
        result.each_value { |v| v.uniq! }
        return result
    end