def self.multiglob(*patterns)
options = (Hash === patterns.last ? patterns.pop : {})
if options.delete(:recurse)
multiglob_r(*patterns)
end
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
if options[:recurse]
patterns += patterns.collect{ |f| File.join(f, '**', '**') }
end
files = []
files += patterns.collect{ |pattern| Dir.glob(pattern, bitflags) }.flatten.uniq
return files
end