class Capybara::Selector::CSSBuilder

def class_conditions(classes)

def class_conditions(classes)
  case classes
  when XPath::Expression
    raise ArgumentError, 'XPath expressions are not supported for the :class filter with CSS based selectors'
  when Regexp
    Selector::RegexpDisassembler.new(classes).alternated_substrings.map do |strs|
      strs.map do |str|
        "[class*='#{str}'#{' i' if classes.casefold?}]"
      end.join
    end
  else
    cls = Array(classes).reject { |c| c.is_a? Regexp }.group_by { |cl| cl.match?(/^!(?!!!)/) }
    [(cls[false].to_a.map { |cl| ".#{Capybara::Selector::CSS.escape(cl.sub(/^!!/, ''))}" } +
    cls[true].to_a.map { |cl| ":not(.#{Capybara::Selector::CSS.escape(cl.slice(1..))})" }).join]
  end
end