     assert Overridable.without_super() == :without_super
   end
 
+  test "public overridable overridden as private function" do
+    assert Overridable.test_public_to_private() == :private
+    refute {:public_to_private, 0} in Overridable.module_info(:exports)
+  end
+
+  test "overridable locals are ignored without super" do
+    assert Overridable.locals() == :ok
+  end
+
   test "calling super with multiple args" do
     assert Overridable.super_with_multiple_args(1, 2) == 5
   end


  def many_clauses(1) do
    13
  end

  defoverridable sample: 0,
                 with_super: 0,
                 without_super: 0,
                 super_with_multiple_args: 2,
                 many_clauses: 1

  true = Module.overridable?(__MODULE__, {:without_super, 0})
  true = Module.overridable?(__MODULE__, {:with_super, 0})

  test "overridable definitions are private" do
    refute {:"with_super (overridable 0)", 0} in Overridable.module_info(:exports)
    refute {:"with_super (overridable 1)", 0} in Overridable.module_info(:exports)
  end

  test "multiple overrides" do
    assert Overridable.multiple_overrides() == [3, 2, 1]
  end

  test "overridable macros" do
