private static < T > FluentIterable < T > concatNoDefensiveCopy ( final Iterable < ? extends T > ... inputs ) { for ( Iterable < ? extends T > input : inputs ) { checkNotNull ( input ) ; } return new FluentIterable < T > ( ) { @ Override public Iterator < T > iterator ( ) { return Iterators . concat ( /* lazily generate the iterators on each input only as needed */ new AbstractIndexedListIterator < Iterator < ? extends T > > ( inputs . length ) { @ Override public Iterator < ? extends T > get ( int i ) { return inputs [ i ] . iterator ( ) ; } } ) ; } } ; }
Concatenates a varargs array of iterables without making a defensive copy of the array .