private static String md5(String str) {
        try {
            final MessageDigest md = MessageDigest.getInstance("MD5");
            final byte[] mdbytes = md.digest(str.getBytes(StandardCharsets.UTF_8));

            final StringBuilder sb = new StringBuilder();
            for (byte mdbyte : mdbytes) {
                sb.append(Integer.toString((mdbyte & 0xff) + 0x100, 16).substring(1));
            }

            return sb.toString();
        } catch (NoSuchAlgorithmException ex) {
            throw new IllegalArgumentException("MD5 algorithm not supported.", ex);
        }
    }
'true' below might speed up metadata retrieval since approximations can
be used. See https://github.com/speedment/speedment-enterprise/issues/168
runtime-parent/runtime-connector-parent/sqlite/src/main/java/com/speedment/runtime/connector/sqlite/internal/SqliteMetadataHandlerImpl.java