class Regexp::Parser

def options_group(token)

def options_group(token)
  positive, negative = token.text.split('-', 2)
  negative ||= ''
  self.switching_options = token.token.equal?(:options_switch)
  opt_changes = {}
  new_active_opts = active_opts.dup
  MOD_FLAGS.each do |flag|
    if positive.include?(flag.to_s)
      opt_changes[flag] = new_active_opts[flag] = true
    end
    if negative.include?(flag.to_s)
      opt_changes[flag] = false
      new_active_opts.delete(flag)
    end
  end
  if (enc_flag = positive.reverse[/[adu]/])
    enc_flag = enc_flag.to_sym
    (ENC_FLAGS - [enc_flag]).each do |other|
      opt_changes[other] = false if new_active_opts[other]
      new_active_opts.delete(other)
    end
    opt_changes[enc_flag] = new_active_opts[enc_flag] = true
  end
  options_stack << new_active_opts
  options_group = Group::Options.new(token, active_opts)
  options_group.option_changes = opt_changes
  nest(options_group)
end