     pre({:import, meta, [module_info, []]}, acc)
   end
 
-  defp pre(ast = {:import, [line: line], [{_, _, module_atoms = [mod|_]}, _opts]}, acc) when is_atom(mod) do
+  defp pre({:import, [line: line], [{_, _, module_atoms = [mod|_]}, _opts]} = ast, acc) when is_atom(mod) do
     current_module  = acc.modules |> :lists.reverse |> Module.concat
     current_imports = acc.imports |> :lists.reverse |> List.flatten
     current_aliases = acc.aliases |> :lists.reverse |> List.flatten

    {ast, %{acc | aliases: aliases, lines_to_context: lines_to_context}}
  end

  defp post(ast = {:defmodule, _, [{:__aliases__, _, module}, _]}, acc) do
    outer_mods   = Enum.drop(acc.modules, length(module))
    outer_scopes = Enum.drop(acc.scopes, length(module))
    {ast, %{acc | modules: outer_mods, scopes: outer_scopes, imports: tl(acc.imports), aliases: tl(acc.aliases)}}

    pre({:def, meta, [head, body]}, acc)
  end

  defp pre({def_fun, [line: line], [{name, _, params}, _body]} = ast, acc) when def_fun in [:def, :defp] do
    current_module  = acc.modules |> :lists.reverse |> Module.concat
    current_imports = acc.imports |> :lists.reverse |> List.flatten
    current_aliases = acc.aliases |> :lists.reverse |> List.flatten
