    @Test public void
    rightOuterJoin() {

        Index<Character, String> left = Index.on(Stream.of("carrot", "banana", "apple"), indexOnFirstChar);
        Index<Character, String> right = Index.on(Stream.of("catamorphism", "banausic", "ballistic", "dirigible"), indexOnFirstChar);

        assertThat(left.rightOuterJoin(right).collect(Collectors.toList()), hasItems(
                T2.of(Optional.of("banana"), "banausic"),
                T2.of(Optional.of("banana"), "ballistic"),
                T2.of(Optional.of("carrot"), "catamorphism"),
                T2.of(Optional.empty(), "dirigible")));
    }