code: private void flush(final boolean propagate) throws IOException {
          final int avail = baseNCodec.available(context);
          if (avail > 0) {
              final byte[] buf = new byte[avail];
              final int c = baseNCodec.readResults(buf, 0, avail, context);
              if (c > 0) {
                  out.write(buf, 0, c);
              }
          }
          if (propagate) {
              out.flush();
          }
      }
docs: Flushes this output stream and forces any buffered output bytes to be written out to the stream. If propagate is
  true, the wrapped stream will also be flushed.
  
  @param propagate
  boolean flag to indicate whether the wrapped OutputStream should also be flushed.
  @throws IOException
  if an I/O error occurs.