class Regexp::Expression::CharacterSet

def <<(member)

def <<(member)
  if @members.last.is_a?(CharacterSubSet)
    @members.last << member
  else
    @members << member
  end
end

def include?(member)

def include?(member)
  @members.each do |m|
    if m.is_a?(CharacterSubSet)
      return true if m.include?(member)
    else
      return true if member == m.to_s
    end
  end; false
end

def initialize(token)

def initialize(token)
  @members = []
  @negative = false
  super
end

def matches?(input)

def matches?(input)
  input =~ /#{to_s}/ ? true : false
end

def negate

def negate
  if @members.last.is_a?(CharacterSubSet)
    @members.last.negate
  else
    @negative = true
  end
end

def negative?

def negative?
  @negative
end

def to_s

def to_s
  s = @text
  s << '^' if negative?
  s << @members.join
  s << ']'
  s << @quantifier.to_s if quantified?
  s
end