       # aims to guarantee removing process_url/1 before we
       # remove the function that depends on it does not cause
       # errors. If it compiles, it works!
-      defoverridable [process_url: 1, not_private: 1]
+      defoverridable process_url: 1, not_private: 1
 
       def process_url(_str) do
         :second

  end

  test "overridable is made concrete if no other is defined" do
    assert Overridable.sample == 1
  end

  test "overridable overridden with super" do
    assert Overridable.with_super == 3
  end

  test "overridable overridden without super" do
    assert Overridable.without_super == :without_super
  end

  test "calling super with multiple args" do

  test "invalid super call" do
    message =
      "nofile:4: no super defined for foo/0 in module Kernel.OverridableOrder.Forwarding. " <>
        "Overridable functions available are: bar/0"

    assert_raise CompileError, message, fn ->
      Code.eval_string("""
      defmodule Kernel.OverridableOrder.Forwarding do
        def bar(), do: 1
        defoverridable bar: 0
        def foo(), do: super()
      end
      """)
    end

    purge(Kernel.OverridableOrder.Forwarding)
  end

  test "undefined functions can't be marked as overridable" do
    message = "cannot make function foo/2 overridable because it was not defined"

    assert_raise ArgumentError, message, fn ->
      Code.eval_string("""
      defmodule Kernel.OverridableOrder.Foo do
        defoverridable foo: 2
      end
      """)
    end

    purge(Kernel.OverridableOrder.Foo)
  end

  test "overrides with behaviour" do
