module Selenium::WebDriver::BiDi::Serialization::Record::Serializable

def self.as_json(value)

def self.as_json(value)
  case value
  when Serializable then value.as_json
  when ::Array then value.map { |element| as_json(element) }
  when ::Hash then value.transform_values { |element| as_json(element) }
  else value
  end
end

def as_json(*)

Omit UNSET fields; emit null only for nullable ones.
def as_json(*)
  payload = {}
  self.class.fields.each do |f|
    value = public_send(f.name)
    next if UNSET.equal?(value)
    next if value.nil? && !f.nullable
    value = Serialization.to_wire(value, Protocol.const_get(f.enum)) if f.enum
    payload[f.wire_key] = Serializable.as_json(value)
  end
  payload.merge!(extensions) if self.class.extensible? && !extensions.empty?
  payload
end