public static <T> Iterable<T> concat( final Iterable<T> a,
                                          final Iterable<T> b ) {
        assert (a != null);
        assert (b != null);
        return () -> Collections.concat(a.iterator(), b.iterator());

    }
public static < T > Iterable < T > concat ( final Iterable < T > a , final Iterable < T > b ) { assert ( a != null ) ; assert ( b != null ) ; return ( ) -> Collections . concat ( a . iterator ( ) , b . iterator ( ) ) ; }
Concatenate two Iterable sources

@param a a non-null Iterable value
@param b a non-null Iterable value
@return an Iterable that will iterate through all the values from 'a' and then all the values from 'b'
@param <T> the value type