class Arel::Nodes::HomogeneousIn

def casted_values

def casted_values
  type = attribute.type_caster
  casted_values = values.map do |raw_value|
    type.serialize(raw_value) if type.serializable?(raw_value)
  end
  casted_values.compact!
  casted_values
end

def eql?(other)

def eql?(other)
  super || (self.class == other.class && self.ivars == other.ivars)
end

def equality?

def equality?
  type == :in
end

def fetch_attribute(&block)

def fetch_attribute(&block)
  if attribute
    yield attribute
  else
    expr.fetch_attribute(&block)
  end
end

def hash

def hash
  ivars.hash
end

def initialize(values, attribute, type)

def initialize(values, attribute, type)
  @values = values
  @attribute = attribute
  @type = type
end

def invert

def invert
  Arel::Nodes::HomogeneousIn.new(values, attribute, type == :in ? :notin : :in)
end

def ivars

def ivars
  [@attribute, @values, @type]
end

def left

def left
  attribute
end

def proc_for_binds

def proc_for_binds
  -> value { ActiveModel::Attribute.with_cast_value(attribute.name, value, ActiveModel::Type.default_value) }
end

def right

def right
  attribute.quoted_array(values)
end