   cluster_path = Path.join(__DIR__, "GraphemeBreakProperty.txt")
   regex = ~r/(?:^([0-9A-F]+)(?:\.\.([0-9A-F]+))?)\s+;\s(\w+)/m
 
-  cluster = Enum.reduce File.stream!(cluster_path), %{}, fn line, acc ->
-    case Regex.run(regex, line, capture: :all_but_first) do
-      ["D800", "DFFF", _class] ->
-        acc
-
-      [first, "", class] ->
-        codepoint = <<String.to_integer(first, 16)::utf8>>
-        Map.update(acc, class, [codepoint], &[<<String.to_integer(first, 16)::utf8>> | &1])
-
-      [first, last, class] ->
-        range = String.to_integer(first, 16)..String.to_integer(last, 16)
-        codepoints = Enum.map(range, fn int -> <<int::utf8>> end)
-        Map.update(acc, class, codepoints, &(codepoints ++ &1))
-
-      nil ->
-        acc
-    end
-  end
+  cluster =
+    Enum.reduce(File.stream!(cluster_path), %{}, fn line, acc ->
+      case Regex.run(regex, line, capture: :all_but_first) do
+        ["D800", "DFFF", _class] ->
+          acc
+
+        [first, "", class] ->
+          codepoint = <<String.to_integer(first, 16)::utf8>>
+          Map.update(acc, class, [codepoint], &[<<String.to_integer(first, 16)::utf8>> | &1])
+
+        [first, last, class] ->
+          range = String.to_integer(first, 16)..String.to_integer(last, 16)
+          codepoints = Enum.map(range, fn int -> <<int::utf8>> end)
+          Map.update(acc, class, codepoints, &(codepoints ++ &1))
+
+        nil ->
+          acc
+      end
+    end)
 
   # Don't break CRLF
   def next_grapheme_size(<<?\r, ?\n, rest::binary>>) do


  defp next_prepend_size(rest, size) do
    case next_grapheme_size(rest) do
      {more, rest} ->  {more + size, rest}
      nil -> {size, rest}
    end
  end

  end

  # Handle Hangul V
  for codepoint <- cluster["LV"] ++ cluster["V"] do
    def next_grapheme_size(<<unquote(codepoint), rest::binary>>) do
      next_hangul_v_size(rest, unquote(byte_size(codepoint)))
    end
