    # File lib/gem_plugin.rb, line 107
        def load(needs = {})
          sdir = File.join(Gem.dir, "specifications")
          gems = Gem::SourceIndex.from_installed_gems(sdir)
          needs = needs.merge({"gem_plugin" => INCLUDE})

          gems.each do |path, gem|
            # don't load gems more than once
            next if @gems.has_key? gem.name
            check = needs.dup

            # rolls through the depends and inverts anything it finds
            gem.dependencies.each do |dep|
              # this will fail if a gem is depended more than once
              if check.has_key? dep.name
                check[dep.name] = !check[dep.name]
              end
            end

            # now since excluded gems start as true, inverting them
            # makes them false so we'll skip this gem if any excludes are found
            if (check.select {|name,test| !test}).length == 0
              # looks like no needs were set to false, so it's good

              # Previously was set wrong, we already have the correct gem path!
              #gem_dir = File.join(Gem.dir, "gems", "#{gem.name}-#{gem.version}")
              gem_dir = File.join(Gem.dir, "gems", path)

              require File.join(gem_dir, "lib", gem.name, "init.rb")
              @gems[gem.name] = gem_dir
            end
          end

          return nil
        end