MapElement::equals is suboptimal
check for equality between elements
but after that
// quickly walk through the other map too, to see if there's // anything in there that we don't have. We don't need to // compare those elements; if one of them is missing we // differ (and if it's not missing the loop above has checked // it)
which is nonsense
should just checking that the sizes are equal before checking elements
also must fix isEquivalent which is similar