code: @Override
      public int read(byte[] b, int startOffset, int length) throws IOException {
          int temp;
          if (ostart >= ofinish) {
              for (temp = 0; temp == 0; temp = getMoreData())
                  ;
              if (temp == -1) {
                  return -1;
              }
          }
  
          if (length <= 0) {
              return 0;
          } else {
              temp = ofinish - ostart;
              if (length < temp) {
                  temp = length;
              }
              System.arraycopy(obuffer, ostart, b, startOffset, temp);
              ostart += temp;
              return temp;
          }
      }
docs: {@inheritDoc}