def bud(opts={})
      opts = {
        atomic:               @atomic,
        backtracking:         @backtracking,
        bound:                @_bound,
        strip:                @strip,
        case_insensitive:     @case_insensitive,
        multiline:            @multiline,
        not_extended:         @not_extended,
        normalize_whitespace: @normalize_whitespace,
        symbols:              @symbols,
        name:                 @name,
        vet:                  @vet && opts[:symbols]
      }.merge opts
      self.class.new(**opts)
    end
def bud(opts={})
      opts = {
        atomic:               @atomic,
        backtracking:         @backtracking,
        bound:                @_bound,
        strip:                @strip,
        case_insensitive:     @case_insensitive,
        multiline:            @multiline,
        not_extended:         @not_extended,
        normalize_whitespace: @normalize_whitespace,
        symbols:              @symbols,
        name:                 @name,
        vet:                  @vet && opts[:symbols]
      }.merge opts
      self.class.new(**opts)
    end
returns a new pattern matcher differing from the original only in the options specified