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 MultiPath.handler(right)
    if MultiPath.handler(left) && paths.uniq.size > 1
      MultiPath.new(left, right)
    else
      right
    end
  else
    msgs.max
  end
end