docs: public static char[] toChars(final byte[] bytes, final String encoding) {
  
          Validate.notBlank(encoding, "The validated character sequence 'encoding' is null or empty");
  
          // make sure we can handle null inputs, and create a defensive copy of the input if needed
          byte[] myBytes;
          if (bytes == null) {
              myBytes = new byte[0];
          } else {
              myBytes = Arrays.copyOf(bytes, bytes.length);
          }
  
          // conversion
          final Charset charset = Charset.forName(encoding);
          final CharBuffer charBuffer = charset.decode(ByteBuffer.wrap(myBytes));
          final char[] result = Arrays.copyOfRange(charBuffer.array(), charBuffer.position(), charBuffer.limit());
  
          // clear confidential data from the array backing the char buffer
          // there is no need to clear the array in the byte buffer, because we simply wrapped the original array, and
          // did not copy it. The caller has to clear that array if they want to wipe any confidential data in the array.
          Cleanser.wipe(charBuffer.array());
  
          return result;
      }