class Dry::Schema::KeyValidator

def key_paths(hash)

Other tags:
    Api: - private
def key_paths(hash)
  hash.flat_map { |key, value|
    case value
    when ::Hash
      if value.empty?
        [key.to_s]
      else
        [key].product(key_paths(hash[key])).map { _1.join(DOT) }
      end
    when ::Array
      hashes_or_arrays = hashes_or_arrays(value)
      if hashes_or_arrays.empty?
        [key.to_s]
      else
        hashes_or_arrays.flat_map.with_index { |el, idx|
          key_paths(el).map { ["#{key}[#{idx}]", *_1].join(DOT) }
        }
      end
    else
      key.to_s
    end
  }
end