docs: final protected boolean fillCacheToken(WsByteBuffer buff) {
          // figure out how much we have left to copy out, append to any existing
          // parsed token (multiple passes through here).
          int curr_len = this.parsedTokenLength;
          int need_len = this.parsedToken.length - curr_len;
          int copy_len = need_len;
  
          // keep going until we have all we need or we run out of buffer data
          while (0 < need_len) {
              if (this.bytePosition >= this.byteLimit) {
                  if (!fillByteCache(buff)) {
                      // save a reference to how much we've pulled so far
                      this.parsedTokenLength = curr_len;
                      return false;
                  }
              }
              // byte cache is now prepped
              int available = this.byteLimit - this.bytePosition;
              if (available < need_len) {
                  // copy what we can from the current cache
                  copy_len = available;
              } else {
                  copy_len = need_len;
              }
              // copy new data into the existing space
              System.arraycopy(this.byteCache, this.bytePosition, this.parsedToken, curr_len, copy_len);
              need_len -= copy_len;
              curr_len += copy_len;
              this.bytePosition += copy_len;
          }
  
          return true;
      }