public byte[] getNext() throws IOException { // System.err.println("getNext() called"); if (LOG.isLoggable(Level.FINEST)) { LOG.finest("getNext() called"); } int c; while ((c = inputStream.read()) != -1) { if (!(pattern == 2 && c == 3)) { next.write(c); if (pattern == 0 && c == 0) { pattern = 1; } else if (pattern == 1 && c == 0) { pattern = 2; } else if (pattern == 2 && c == 0) { byte[] s = next.toByteArrayLess3(); next.reset(); if (s != null) { return s; } } else if (pattern == 2 && c == 1) { byte[] s = next.toByteArrayLess3(); next.reset(); pattern = 0; if (s != null) { return s; } } else if (pattern != 0) { pattern = 0; } } else { pattern = 0; } } byte[] s = next.toByteArray(); next.reset(); if (s.length > 0) { return s; } else { return null; } }