def build_matcher(options, whitelist_option, blacklist_option)
        options.assert_exclusive_keys(whitelist_option, blacklist_option)
        
        if options.include?(whitelist_option)
          value = options[whitelist_option]
          value.is_a?(Matcher) ? value : WhitelistMatcher.new(options[whitelist_option])
        elsif options.include?(blacklist_option)
          value = options[blacklist_option]
          raise ArgumentError, ":#{blacklist_option} option cannot use matchers; use :#{whitelist_option} instead" if value.is_a?(Matcher)
          BlacklistMatcher.new(value)
        else
          AllMatcher.instance
        end
      end
def build_matcher(options, whitelist_option, blacklist_option)
        options.assert_exclusive_keys(whitelist_option, blacklist_option)
        
        if options.include?(whitelist_option)
          value = options[whitelist_option]
          value.is_a?(Matcher) ? value : WhitelistMatcher.new(options[whitelist_option])
        elsif options.include?(blacklist_option)
          value = options[blacklist_option]
          raise ArgumentError, ":#{blacklist_option} option cannot use matchers; use :#{whitelist_option} instead" if value.is_a?(Matcher)
          BlacklistMatcher.new(value)
        else
          AllMatcher.instance
        end
      end
Builds a matcher strategy to use for the given options.  If neither a
 whitelist nor a blacklist option is specified, then an AllMatcher is
 built.