class Cucumber::Cli::Options

def reverse_merge(other_options)

def reverse_merge(other_options)
  @options = other_options.options.merge(@options)
  @options[:require] += other_options[:require]
  @options[:excludes] += other_options[:excludes]
  @options[:name_regexps] += other_options[:name_regexps]
  @options[:tag_expressions] += other_options[:tag_expressions]
  merge_tag_limits(@options[:tag_limits], other_options[:tag_limits])
  @options[:env_vars] = other_options[:env_vars].merge(@options[:env_vars])
  if @options[:paths].empty?
    @options[:paths] = other_options[:paths]
  else
    @overridden_paths += (other_options[:paths] - @options[:paths])
  end
  @options[:source] &= other_options[:source]
  @options[:snippets] &= other_options[:snippets]
  @options[:duration] &= other_options[:duration]
  @options[:strict] = other_options[:strict].merge!(@options[:strict])
  @options[:dry_run] |= other_options[:dry_run]
  @profiles += other_options.profiles
  @expanded_args += other_options.expanded_args
  if @options[:formats].empty?
    @options[:formats] = other_options[:formats]
  else
    @options[:formats] += other_options[:formats]
    @options[:formats] = stdout_formats[0..0] + non_stdout_formats
  end
  @options[:retry] = other_options[:retry] if @options[:retry].zero?
  @options[:retry_total] = other_options[:retry_total] if @options[:retry_total].infinite?
  self
end