   defp do_camelize(<<>>),
     do: <<>>
 
-  defp to_upper_char(char) when char in ?a..?z, do: char - 32
+  defp to_upper_char(char) when char >= ?a and char <= ?z, do: char - 32
   defp to_upper_char(char), do: char
 
-  defp to_lower_char(char) when char in ?A..?Z, do: char + 32
+  defp to_lower_char(char) when char >= ?A and char <= ?Z, do: char + 32
   defp to_lower_char(char), do: char
 end

  defp do_camelize(<<?_, ?_, t :: binary>>),
    do: do_camelize(<< ?_, t :: binary >>)

  defp do_camelize(<<?_, h, t :: binary>>) when h in ?a..?z,
    do: <<to_upper_char(h)>> <> do_camelize(t)

  defp do_camelize(<<?_>>),

    <<to_lower_char(h)>> <> do_underscore(t, h)
  end

  defp do_underscore(<<h, t, rest :: binary>>, _)
      when (h >= ?A and h <= ?Z) and not (t >= ?A and t <= ?Z) and t != ?. do
    <<?_, to_lower_char(h), t>> <> do_underscore(rest, t)
  end

  defp do_underscore(<<h, t :: binary>>, prev)
      when (h >= ?A and h <= ?Z) and not (prev >= ?A and prev <= ?Z) do
    <<?_, to_lower_char(h)>> <> do_underscore(t, h)
  end

