docs: public static char[] encode(byte[] src, boolean upper) {
          char[] table = upper ? Base16.upper : Base16.lower;
          char[] dst = new char[src.length * 2];
  
          for (int si = 0, di = 0; si < src.length; si++) {
              byte b = src[si];
              dst[di++] = table[(b & 0xf0) >>> 4];
              dst[di++] = table[(b & 0x0f)];
          }
  
          return dst;
      }