fn intersection(
    range1: ProtocolsRange,
    range2: ProtocolsRange
) -> Result<ProtocolsRange, ProtocolNegotiationError>