code: public List<WsByteBuffer> finish() {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "finish");
          }
          List<WsByteBuffer> list = new LinkedList<WsByteBuffer>();
          if (isFinished()) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                  Tr.exit(tc, "finish, previously finished");
              }
              return list;
          }
          WsByteBuffer buffer = null;
          this.deflater.finish();
          while (!this.deflater.finished()) {
              int num = this.deflater.deflate(this.buf, 0, this.buf.length);
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Compressed amount=" + num + " read=" + this.deflater.getBytesRead() + " written=" + this.deflater.getBytesWritten());
              }
              if (0 < num) {
                  buffer = makeBuffer(num);
                  list.add(buffer);
              }
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "finish, return list of size " + list.size());
          }
          return list;
      }
docs: /*
  @see com.ibm.wsspi.http.channel.compression.CompressionHandler#finish()