The const implementation from #507, and the existing enum implementation, does not properly compare objects. Objects are compared in a loosely-typed manner (==), which also results in a loosely-typed comparison of all members.
This behavior is incorrect, and results in spec violations. For example, "string" == true returns true, despite being clearly invalid - both the type and content are completely different.