### Question:
ModifierProtocolRepository extends ProtocolRepository<String,Protocol.ModifierProtocol> { static Function<String,Comparator<Protocol.ModifierProtocol>> getModifierProtocolComparator( Collection<ModifierSupportedProtocols> supportedProtocols ) { return getModifierProtocolComparator( versionMap( supportedProtocols ) ); } ModifierProtocolRepository( Protocol.ModifierProtocol[] protocols, Collection<ModifierSupportedProtocols> supportedProtocols ); Optional<SupportedProtocols<String,Protocol.ModifierProtocol>> supportedProtocolFor( String protocolName ); Collection<ModifierSupportedProtocols> supportedProtocols();  }### Answer:
@Test public void shouldCompareModifierProtocolsByListOrder() { List<ModifierSupportedProtocols> supportedProtocols = asList( new ModifierSupportedProtocols( COMPRESSION, asList( LZO.implementation(), SNAPPY.implementation(), LZ4.implementation() ) ) ); Comparator<Protocol.ModifierProtocol> comparator = ModifierProtocolRepository.getModifierProtocolComparator( supportedProtocols ) .apply( COMPRESSION.canonicalName() ); assertThat( comparator.compare( LZO, TestProtocols.TestModifierProtocols.SNAPPY ), Matchers.greaterThan( 0 ) ); assertThat( comparator.compare( TestProtocols.TestModifierProtocols.SNAPPY, TestProtocols.TestModifierProtocols.LZ4 ), Matchers.greaterThan( 0 ) ); }