       def new, do: %LocalPoint{}
     end
 
-    assert LocalPoint.new == %{__struct__: LocalPoint, x: 0}
+    assert LocalPoint.new() == %{__struct__: LocalPoint, x: 0}
 
     defmodule LocalPoint do
       defstruct x: 0, y: 0
       def new, do: %LocalPoint{}
     end
 
-    assert LocalPoint.new == %{__struct__: LocalPoint, x: 0, y: 0}
+    assert LocalPoint.new() == %{__struct__: LocalPoint, x: 0, y: 0}
   after
     Code.compiler_options(ignore_module_conflict: false)
   end


  test "new/1" do
    assert Map.new(%{a: 1, b: 2}) == %{a: 1, b: 2}
    assert Map.new(MapSet.new([a: 1, b: 2, a: 3])) == %{b: 2, a: 3}
  end

  test "new/2" do
    transformer = fn {key, value} -> {key, value * 2} end
    assert Map.new(%{a: 1, b: 2}, transformer) == %{a: 2, b: 4}
    assert Map.new(MapSet.new([a: 1, b: 2, a: 3]), transformer) == %{b: 4, a: 6}
  end

  test "take/2" do

  end

  test "get_and_update/3" do
    message = "the given function must return a two-element tuple or :pop, got: 1"

    assert_raise RuntimeError, message, fn ->
      Map.get_and_update(%{a: 1}, :a, fn value -> value end)
    end
  end

  test "get_and_update!/3" do
    message = "the given function must return a two-element tuple or :pop, got: 1"

    assert_raise RuntimeError, message, fn ->
      Map.get_and_update!(%{a: 1}, :a, fn value -> value end)
    end
  end

  test "maps with optional comma" do
    assert %{a: :b} == %{a: :b}
    assert %{1 => 2} == %{1 => 2}
    assert %{1 => 2, a: :b} == %{1 => 2, a: :b}
  end

  test "update maps" do
