docs: public static byte[] decode(final byte[] input, int inOffset, final int inLen)
      {
          if (inLen == 0)
              return ByteString.EMPTY_BYTE_ARRAY;
  
          if (inLen % 4 != 0)
              throw new IllegalArgumentException("Input block size is not 4");
  
          int withoutPaddingLen = inLen, limit = inOffset + inLen;
          while (input[--limit] == pad)
              withoutPaddingLen--;
  
          // Create result array of exact required size.
          final int outLen = ((withoutPaddingLen) * 3) / 4;
          final byte[] output = new byte[outLen];
  
          decode(input, inOffset, inLen, output, 0, outLen);
  
          return output;
      }