private PngChunk processTailChunks( PngImage result, Iterator<PngChunk> itBaseChunks, PngChunk lastBaseChunk) throws IOException { while (lastBaseChunk != null) { if (lastBaseChunk.isCritical()) { ByteArrayOutputStream bytes = new ByteArrayOutputStream(lastBaseChunk.getLength()); DataOutputStream data = new DataOutputStream(bytes); data.write(lastBaseChunk.getData()); data.close(); PngChunk newChunk = new PngChunk(lastBaseChunk.getType(), bytes.toByteArray()); result.addChunk(newChunk); } lastBaseChunk = itBaseChunks.hasNext() ? itBaseChunks.next() : null; } return lastBaseChunk; }