docs: public static byte[] getVariableByteUnsigned(int value) {
          if (value < 0) {
              throw new InvalidParameterException("negative value not allowed: " + value);
          } else if (value < 128) { // 2^7
              // encode the number in a single byte
              return new byte[]{(byte) value};
          } else if (value < 16384) { // 2^14
              // encode the number in two bytes
              return new byte[]{(byte) (value | 0x80), (byte) (value >> 7)};
          } else if (value < 2097152) { // 2^21
              // encode the number in three bytes
              return new byte[]{(byte) (value | 0x80), (byte) ((value >> 7) | 0x80), (byte) (value >> 14)};
          } else if (value < 268435456) { // 2^28
              // encode the number in four bytes
              return new byte[]{(byte) (value | 0x80), (byte) ((value >> 7) | 0x80), (byte) ((value >> 14) | 0x80),
                      (byte) (value >> 21)};
          } else {
              // encode the number in five bytes
              return new byte[]{(byte) (value | 0x80), (byte) ((value >> 7) | 0x80), (byte) ((value >> 14) | 0x80),
                      (byte) ((value >> 21) | 0x80), (byte) (value >> 28)};
          }
      }