@Override
    protected SubChannelCopy pick(final List<SubChannelCopy> list) {
        if (CollectionUtils.isEmpty(list)) {
            return null;
        }
        final int size = list.size();
        if (size == 1) {
            return list.get(0);
        }
        int i = INDEX_UPDATER.incrementAndGet(this);
        if (i >= size) {
            int oldi = i;
            i %= size;
            INDEX_UPDATER.compareAndSet(this, oldi, i);
        }
        return list.get(i);
    }
@Test
    public void testPick() {
        SubChannelCopy firstSubChannelCopy = mock(SubChannelCopy.class);
        SubChannelCopy secondSubChannelCopy = mock(SubChannelCopy.class);
        List<SubChannelCopy> list = Arrays.asList(firstSubChannelCopy, secondSubChannelCopy);
        assertNotNull(roundRobinPicker.pick(list));
        assertNotNull(roundRobinPicker.pick(list));
        assertEquals(firstSubChannelCopy, roundRobinPicker.pick(Collections.singletonList(firstSubChannelCopy)));
        assertNull(roundRobinPicker.pick(null));
    }