    # File lib/facets/core/dir/self/multiglob.rb, line 39
    def Dir.multiglob( *patterns )
      options  = (Hash === patterns.last ? patterns.pop : {})

      bitflags = 0
      bitflags |= File::FNM_NOESCAPE if options[:noescape]
      bitflags |= File::FNM_CASEFOLD if options[:casefold]
      bitflags |= File::FNM_PATHNAME if options[:pathname] or options[:strict]
      bitflags |= File::FNM_DOTMATCH if options[:dotmatch] or options[:strict]

      patterns = [patterns].flatten.compact

      patterns_include = patterns.select{ |f| f !~ /^[-]/ }
      patterns_exclude = patterns.select{ |f| f =~ /^[-]/ }

      patterns_include.collect!{ |f| f =~ /^[+]/ ? f[1..-1] : f }
      patterns_exclude.collect!{ |f| f =~ /^[-]/ ? f[1..-1] : f }

      if options[:recurse]
        patterns_include += patterns_include.collect{ |f| File.join(f, '**', '*') }
        patterns_exclude += patterns_exclude.collect{ |f| File.join(f, '**', '*') }
      end

      files = []
      files += patterns_include.collect{ |pattern| Dir.glob(pattern, bitflags) }.flatten.uniq
      files -= patterns_exclude.collect{ |pattern| Dir.glob(pattern, bitflags) }.flatten.uniq

      return files
    end