if (precount-prepos>=28) {
if (precount-prepos>=27) {
  private void readOggPageHeader()    throws IOException  {    int packets = 1;    if (precount-prepos<28) {      int avail = in.available();      if (avail > 0) {        int size = Math.min(prebuf.length - precount, avail);        int read = in.read(prebuf, precount, size);        if (read < 0) { // inputstream has ended          throw new IOException("End of stream but available was positive");        }        precount += read;      }    }    if (precount-prepos>=28) { // can read beginning of Page header      if (!(new String(prebuf, prepos, 4).equals("OggS"))) {        throw new StreamCorruptedException("Lost Ogg Sync");      }      if (streamSerialNumber != readInt(prebuf, prepos+14)) {        throw new StreamCorruptedException("Ogg Stream Serial Number mismatch");      }      packets = 0xff & prebuf[prepos+26];    }    if (precount-prepos<27+packets) {      int avail = in.available();      if (avail > 0) {        int size = Math.min(prebuf.length - precount, avail);        int read = in.read(prebuf, precount, size);        if (read < 0) { // inputstream has ended          throw new IOException("End of stream but available was positive");        }        precount += read;      }    }    if (precount-prepos>=27+packets) { // can read entire Page header      System.arraycopy(prebuf, prepos+27, packetSizes, 0, packets);      packetCount = 0;      prepos += 27+packets;      packetsPerOggPage = packets;    }  }