docs: private int getBinaryLength(Mode pm, Mode tm, Mode nm, Mode lm, int tl, int nl, int ll, int position, boolean lastSegment) {
          int binaryLength;
  
  //        System.out.printf("P %s, T %s, N %s, L %s ", modeToString(pm), modeToString(tm), modeToString(nm), modeToString(lm));
  
          binaryLength = getChunkLength(pm, tm, tl, position);
          binaryLength += getChunkLength(tm, nm, nl, (position + tl));
          binaryLength += getChunkLength(nm, lm, ll, (position + tl + nl));
  
          if (lastSegment) {
              switch (lm) {
                  case GM_CHINESE:
                      binaryLength += 13;
                      break;
                  case GM_NUMBER:
                      binaryLength += 10;
                      break;
                  case GM_LOWER:
                  case GM_UPPER:
                      binaryLength += 5;
                      break;
                  case GM_MIXED:
                      binaryLength += 10;
                      break;
                  case GM_BYTE:
                      binaryLength += 4;
                      break;
              }
  //            System.out.printf("LAST ");
          }
  
  //        System.out.printf(" = %db\n", binaryLength);
  
          return binaryLength;
      }