@@ -0,0 +1,1182 @@
+package innovimax.mixthem.io;%0A%0Aimport java.io.IOException;%0Aimport java.util.ArrayList;%0Aimport java.util.Iterator;%0Aimport java.util.List;%0A%0Apublic class MultiChannelCharReader implements IMultiChannelCharInput %7B%0A%09%0A%09private final List%3CICharInput%3E readers = new ArrayList%3CICharInput%3E();%0A%09%0A%09public MultiChannelCharReader(final List%3CInputResource%3E inputs) %7B%0A%09%09inputs.stream().forEach(input -%3E %7B%0A%09%09%09try %7B%0A%09%09%09%09this.readers.add(new DefaultCharReader(input));%0A%09%09%09%7D catch (IOException e) %7B%0A%09%09%09%09throw new RuntimeException(e);%0A%09%09%09%7D%0A%09%09%7D);%0A%09%7D%0A%09%0A%09@Override%0A%09public boolean hasCharacter() throws IOException %7B%0A%09%09final Iterator%3CICharInput%3E iterator = this.readers.iterator();%0A%09%09while (iterator.hasNext()) %7B%0A%09%09%09final ICharInput reader = iterator.next();%0A%09%09%09if (reader.hasCharacter()) %7B%0A%09%09%09%09return true;%0A%09%09%09%7D%0A%09%09%7D%0A%09%09return false;%0A%09%7D%0A%09%0A%09@Override%0A%09public int%5B%5D nextCharacters() throws IOException %7B%0A%09%09final int%5B%5D chars = new int%5Bthis.readers.size()%5D;%0A%09%09int channel = 0;%0A%09%09final Iterator%3CICharInput%3E iterator = this.readers.iterator();%0A%09%09while (iterator.hasNext()) %7B%0A%09%09%09final ICharInput reader = iterator.next();%0A%09%09%09final int c = reader.nextCharacter();%0A%09%09%09chars%5Bchannel++%5D = c;%0A%09%09%7D%0A%09%09return chars;%0A%09%7D%0A%0A%7D%0A

Create MultiChannelCharReader.java