module Dry::Schema::Message::Or

def self.[](left, right, messages)

Other tags:
    Api: - private
def self.[](left, right, messages)
  msgs = [left, right].flatten
  paths = msgs.map(&:path)
  if paths.uniq.size == 1
    SinglePath.new(left, right, messages)
  elsif right.is_a?(Array)
    if left.is_a?(Array) && paths.uniq.size > 1
      MultiPath.new(left, right)
    else
      right
    end
  else
    msgs.max
  end
end