class Dry::Schema::JSONSchema::SchemaCompiler

def visit_predicate(node, opts = EMPTY_HASH)

Other tags:
    Api: - private
def visit_predicate(node, opts = EMPTY_HASH)
  name, rest = node
  if name.equal?(:key?)
    prop_name = rest[0][1]
    keys[prop_name] = {}
  else
    target = keys[opts[:key]]
    type_opts = fetch_type_opts_for_predicate(name, rest, target)
    if target[:type]&.include?("array")
      target[:items] ||= {}
      merge_opts!(target[:items], type_opts)
    else
      merge_opts!(target, type_opts)
    end
  end
end