code: private void saveDecryptedPositions() {
          for (int i = 0; i < decryptedNetPosInfo.length; i++) {
              decryptedNetPosInfo[i] = 0;
          }
          if (null != getBuffers()) {
              WsByteBuffer[] buffers = getBuffers();
              if (buffers.length > decryptedNetPosInfo.length) {
                  decryptedNetPosInfo = new int[buffers.length];
              }
              for (int i = 0; i < buffers.length && null != buffers[i]; i++) {
                  decryptedNetPosInfo[i] = buffers[i].position();
              }
          }
      }
docs: Save the starting positions of the output buffers so that we can properly
  calculate the amount of data being returned by the read.